)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":17,"context_line":"The specification is defined in:"},{"line_number":18,"context_line":"https://github.com/openstack/neutron-specs/blob/master/specs/wallaby/port-forwarding-port-ranges.rst"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint floatingips-portforwarding-ranges"},{"line_number":21,"context_line":"Change-Id: Id715da6591124de45f41cc367bf39a6bfe190c9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"480e0908_854af890","line":20,"range":{"start_line":20,"start_character":12,"end_line":20,"end_character":55},"updated":"2023-02-07 18:29:32.000000000","message":"This URL doesn\u0027t redirect to the correct link. Please correct it.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The specification is defined in:"},{"line_number":18,"context_line":"https://github.com/openstack/neutron-specs/blob/master/specs/wallaby/port-forwarding-port-ranges.rst"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint floatingips-portforwarding-ranges"},{"line_number":21,"context_line":"Change-Id: Id715da6591124de45f41cc367bf39a6bfe190c9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"f55c9503_19643d87","line":20,"range":{"start_line":20,"start_character":12,"end_line":20,"end_character":55},"in_reply_to":"480e0908_854af890","updated":"2023-02-08 13:54:26.000000000","message":"Have no clue why it is not working anymore, I am going to put the full url here them, is there any problem?","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"076d8655b6dd26a91980789961b7e6d36458214f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The specification is defined in:"},{"line_number":18,"context_line":"https://github.com/openstack/neutron-specs/blob/master/specs/wallaby/port-forwarding-port-ranges.rst"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint floatingips-portforwarding-ranges"},{"line_number":21,"context_line":"Change-Id: Id715da6591124de45f41cc367bf39a6bfe190c9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"44a07ddb_3c9c6dbf","line":20,"range":{"start_line":20,"start_character":12,"end_line":20,"end_character":55},"in_reply_to":"f55c9503_19643d87","updated":"2023-02-08 14:14:43.000000000","message":"It is fine for me. We generally open a new bp in horizon launchpad\nhttps://blueprints.launchpad.net/horizon/+addspec","commit_id":"155034be08460aa368848099639df641daa03f2e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"4e2dc361933b2c913e206b4229a095991403ca5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6ce49576_32f9b6e4","updated":"2022-12-22 20:00:21.000000000","message":"recheck","commit_id":"902ddca0110adb197252b4d03ffc7595aa4a97ca"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"643f46a4da2731304b98e2466bfd1fd0b4d6bb9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5c9e4114_0f51a9d9","updated":"2022-12-26 17:40:32.000000000","message":"pep8 failure is a known issue.\nIt will be fixed by https://review.opendev.org/c/openstack/horizon/+/868542.\nPlease avoid recheck for pep8 failure.","commit_id":"20723cc5caea14a8c8e15a1a4b4343742f6d451d"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"2657f0a776dbae9bb8fe506810dab1a1234f9512","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5b993afb_35f125aa","updated":"2022-12-23 12:54:34.000000000","message":"recheck","commit_id":"20723cc5caea14a8c8e15a1a4b4343742f6d451d"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1ed1f0dc9b68258e67f65bd9f6a81d2cd8a12961","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9f066af6_ea8687eb","updated":"2022-12-23 00:50:04.000000000","message":"recheck","commit_id":"20723cc5caea14a8c8e15a1a4b4343742f6d451d"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"91aa42371bd2bec4d4ebb31a4c85190ab40dcfa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b04059ca_ac6cefcf","updated":"2022-12-26 16:52:59.000000000","message":"recheck","commit_id":"20723cc5caea14a8c8e15a1a4b4343742f6d451d"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"5d565bdad85661fcec1656ac39c0d5336bca988b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"266ef6ef_00c6a285","in_reply_to":"5c9e4114_0f51a9d9","updated":"2022-12-26 19:40:04.000000000","message":"ok, many thanks.","commit_id":"20723cc5caea14a8c8e15a1a4b4343742f6d451d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"75f79005c85d002bb3b2540c4d08b964e264215c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"11a37b31_bf7f5cde","updated":"2022-12-26 20:36:55.000000000","message":"Note that I haven\u0027t reviewed this patch throughoutly.","commit_id":"81b50d99aec98c298dfb85e09c2c7ef359c57f67"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"5d565bdad85661fcec1656ac39c0d5336bca988b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8b5c3051_ca735236","updated":"2022-12-26 19:40:04.000000000","message":"Thanks for reviewing this patch Akihiro 😊","commit_id":"81b50d99aec98c298dfb85e09c2c7ef359c57f67"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"6b2e04bd3028fc583539bf4914a7ec64c4200173","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"77950114_963ce9f3","updated":"2023-01-19 13:37:28.000000000","message":"recheck","commit_id":"1524cb419f196ad22eac39574b447642e148f6d0"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"a45ce3c8d07a79833576eebdc5433bdb33662eb4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c173d210_c9f65f9c","updated":"2023-01-04 13:49:51.000000000","message":"recheck","commit_id":"1524cb419f196ad22eac39574b447642e148f6d0"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7f24a976_12e1087f","updated":"2023-02-08 13:54:26.000000000","message":"Hello Vishal Manchanda. Thanks for your reviews 😊","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2c450489_068263e3","updated":"2023-02-07 18:29:32.000000000","message":"Hi, Thanks for the patch. Please find some comments inline.\n\nCould you add link of neutron api-ref. for this feature and link of the CLI\ncommand which I can follow to Create FloatingIpPortForwarding Rules from CLI.\n\nAlso, If I am testing this patch using devstack enviornment\nwhat configuration I have to do in neutron side to enable this feature?","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"7879196a6ff6179a723299fd057bd7d38bc20a5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4461c6c7_ec77d7e9","updated":"2023-02-06 12:12:03.000000000","message":"recheck","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f65ec9ab58412bef62eb0db0a6f0f6b3465eb339","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"51539b3e_f1b86fc9","updated":"2023-02-03 12:18:50.000000000","message":"recheck","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"076d8655b6dd26a91980789961b7e6d36458214f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e290d26d_47ea218d","in_reply_to":"04cda75d_c7d6be92","updated":"2023-02-08 14:14:43.000000000","message":"acknowledge, will try that.\nThanks.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"04cda75d_c7d6be92","in_reply_to":"2c450489_068263e3","updated":"2023-02-08 13:54:26.000000000","message":"Neutron Zed release.\n\nin the neutron.conf file, in the [DEFAULT] section, add the `port_forwarding` in the service_plugins list.\n\n[DEFAULT]\n...\nservice_plugins \u003d ...,port_forwarding\n...","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"2cbe2f36cba9b4c2455f7db9ab02f3eb97f57f65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ad7cb52b_76ff749b","in_reply_to":"7528623d_4b546f70","updated":"2023-02-09 12:19:27.000000000","message":"Hello, Vishal, I am not in this irc channel, should I join in the irccloud horizon channel? Is there something you would like to discuss there? and thanks again for yours reviews 😊","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"b5b17d21d4033e674bf4951d178a5e065b597422","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8fd8acf4_a23763b4","in_reply_to":"ad7cb52b_76ff749b","updated":"2023-02-10 09:41:12.000000000","message":"It is not necessary but if you join it will make the review process easy and faster. I have many questions related to this feature which we can discuss there.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"58944777f3e7f39aa55d58ac7bed079dc86541fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7528623d_4b546f70","in_reply_to":"e290d26d_47ea218d","updated":"2023-02-08 19:40:17.000000000","message":"are you on irccloud and joined horizon channel?","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a7f6c8fb_d2f0d282","updated":"2023-02-20 18:38:56.000000000","message":"Hello Vishal, I had the same problem updating the internal port, for some reason, the neutron api is not updating internal port when we use the internal_port_range field in the API, so I updated the object used in the request to use internal_port when there is no range and internal_port_range when there is a range, it solved the problem, thanks!\n\nAbout the python-neutronclient. I created a validation to check the client version, if the version is under 8.1, the panels will not be displayed to the users.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"1f1fed0ecff133b1922733a2b39ae000ed35a314","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3195ccd6_e2c29115","updated":"2023-02-17 17:40:06.000000000","message":"Hi, I tested your patch in my devstack env.\n1. If I open \"List all floating IP port forwarding Rule\", I can\u0027t see any added rule and\nget an error \"Unable to retrieve floating IP port forwarding rules\". Please see [1].\n\n2. I can\u0027t see any create \u0027floating ip port forwarding rule\u0027 button on \"Manage floating IP\nport forwarding rules\" view. Please see [1].\n\n3. If I try to create a \u0027floating ip port forwarding rule\u0027 enter all filed values and submit\nthe  \"Add floating IP port forwarding rule\" form, no new rule is added and\nredirects me to the same form, and no error I can see in the horizon dashboard. Please see [2]\n\n[1] https://ibb.co/BqBVfSG\n[2] https://ibb.co/JQdV7fw","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5b9dd12cc104be8e83ebae0ffe05530901b7e31b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aa22b076_03694a2f","updated":"2023-02-20 14:52:14.000000000","message":"I have noticed updating the value of \"Internal port\" for an existing IP port forwarding rule is not working with your patch. If you try to update the value of \"Internal port\", you will get a success message it is updated but in actuality, it is not getting updated via horizon. Could you check and confirm the same?","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"fc4aa3fc76fac0aa97892be4d1f13719eb797757","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a0d849d4_08eb8aec","updated":"2023-02-20 14:52:45.000000000","message":"adding review priority for this patch to get more attention.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f45f406ff72d5fe57ac0e7b8a290b5705f554bda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d11a8cab_200f4192","in_reply_to":"3195ccd6_e2c29115","updated":"2023-02-17 18:36:01.000000000","message":"Hi Vishal, many thanks for your testing 😊. The error you get in [1], seems to be like you are using an old version from python-neutronclient, could you confirm that to me? should we increase its version in the requirements? The python-neutronclient version with portforwardings is the 8.1.0.\n\nI think the second problem could be caused to the neutronclient as well (or, somethimes you clicked so fast in the creation action that gives no time to the javascript get fully loaded and load the modal wrapper function).\n\nAgain, many thanks for testing this patch 😊","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6e670fd350bfe4fdbd756f35de34329188d2cf74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2114c51e_4030a4c0","in_reply_to":"a7f6c8fb_d2f0d282","updated":"2023-02-20 19:31:10.000000000","message":"nice, +1.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"58baf72e943bbacb5f502b047f0e2dba06166e7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f3503506_e3e13fc4","in_reply_to":"d11a8cab_200f4192","updated":"2023-02-20 08:47:01.000000000","message":"yeah, I was using the old python-neutronclient version, now updated to \u00278.1.0\u0027 version which fixes these issues.\n\nCould you also update python-neutron client version in ``requirements. txt`` and mention this in releasenote. [1]?\n\nI was also thinking if we should add some conditions here so that if python-neutron client version is \u003d\u003e8.1.0 only then this port-forwarding-rule feature is visible on the horizon. what do you think? we are already following this for cinder and nova for horizon but I am not sure if we can do the same in the horizon for neutron features [2]. \n\n[1] https://github.com/openstack/horizon/blob/master/requirements.txt#L40\n[2] https://docs.openstack.org/horizon/latest/contributor/topics/microversion_support.html","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"a6f673fc76b262b1c705fc694540310c46632351","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f617af6a_464c187d","updated":"2023-02-21 08:38:55.000000000","message":"LGTM, will +2 once zuul is +1.\n\none question: Can we use \"Release Floating Ip\" as the first action for the\nfloating Ips table row action because right now it is looking wired? See https://ibb.co/Y0XBwK5","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f1f4ddf1b903d5c96c637e932e42565f6bba0f78","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ae5acdbd_ca0093af","updated":"2023-02-21 05:38:44.000000000","message":"The patch looks in good shape to me, testing the latest P.S.\nmeanwhile, could you fix the failed integration test [1]\n\n[1] https://zuul.opendev.org/t/openstack/build/e8dedf9e3f30426d87479749145d5c72/log/job-output.txt#22955","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"b98c8e46f60d65c509076163f8555013c7e531f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"bad6ebc5_6cc31563","in_reply_to":"e26daca8_79ad1bd5","updated":"2023-02-21 22:47:41.000000000","message":"Found the problem in zuul, the neutron instance used in integration tests is not with the portforwardings plugin enabled so I added an enabled option in the defaults where users can enable or disable the portforwarding features in Horizon","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1f4a8c7ae6a02277b294291679ab7f6a4a032c7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e26daca8_79ad1bd5","in_reply_to":"f617af6a_464c187d","updated":"2023-02-21 19:47:17.000000000","message":"I changed the orders in the actions. About the zuul tests, I am having some difficult to run the tox integration tests in my environment, not sure how to do it in horizon, I am ever getting connection error, like the horizon is not running when the tests are starting.","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"2dc7e84e0716162aeecac3eec11b8999f17600d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"65c26bc0_fb3f7757","updated":"2023-02-22 04:17:47.000000000","message":"CI is failing due to https://review.opendev.org/c/openstack/devstack/+/859773\nNow devstack team revert that patch.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"be5eeea155fa8be70367b4de1bc7452c0ce903fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"68da6568_3b748589","updated":"2023-02-22 07:17:12.000000000","message":"LGTM, waiting for the CI to pass.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"039785c690b923703b6a344443edc033ff6f8278","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"54e6efb2_1b9a766f","updated":"2023-02-21 23:58:51.000000000","message":"recheck","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"b98c8e46f60d65c509076163f8555013c7e531f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"bc5ba041_d9d9c055","updated":"2023-02-21 22:47:41.000000000","message":"recheck","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"930d336cfff3a89859bfc493b9d2a2f803d9be9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"dd3cc603_69cdfc62","updated":"2023-02-22 09:54:09.000000000","message":"recheck, devstack patch is merged https://review.opendev.org/c/openstack/devstack/+/874625","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"64b648559522a18869e120acedaf219ab31e0537","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"26b1b61a_bcbeb725","updated":"2023-02-22 11:02:34.000000000","message":"recheck, failed integration test not related to this change.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"ff91debe8301b0a92709f7dac900a10341f3b41b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"dd289b99_ed70e7cd","updated":"2023-02-22 02:59:07.000000000","message":"recheck, failed integration test not related with this change.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f46b3b9ec1b514c8ae00983db8a515e7e7181220","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"57bbae55_f14a2cd4","updated":"2023-02-22 13:23:10.000000000","message":"recheck, integration job failed with TIMED_OUT error.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"93e15786dace6ab7af050987fada82e8c326dfc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b6595bf4_7aac74b7","updated":"2023-02-22 15:10:46.000000000","message":"recheck, random failure","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3f2d0254c535381440900bbce2f1482785207056","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"66a19c75_f7b79eba","updated":"2023-02-22 14:13:14.000000000","message":"recheck, random failure.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"9c055663916631010aa38984954230bdb7622b42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"013cfee2_e9d7da55","in_reply_to":"54e6efb2_1b9a766f","updated":"2023-02-22 04:06:03.000000000","message":"hi, JFYI failed integration test is not related to your change \u0027test_images_pagination\u0027. I am fixing it in a separate patch, till then avoid rechecking.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"35d462b31ecfeb09e73b14c9a61a1f4c7c00eaaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7af6b17a_175b34e1","updated":"2023-02-24 12:04:46.000000000","message":"Hi, thanks for working on this patch, Please find a few a comment inline.\n\nYou may know neutron team plans to switch python bindings for neutron from neutron client to openstacksdk. Can you please check and confirm whether FIP port-fwd is supported by OpenStack SDK or not?\n","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"c47bff80f6ccfc55f1347caee0cf3fc30ca8077c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"189af007_00a0c001","updated":"2023-02-22 23:53:30.000000000","message":"recheck","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"a5600466e620c7235b995884b14389d976a8b297","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7fa7365b_8a7a7e05","in_reply_to":"7af6b17a_175b34e1","updated":"2023-02-24 13:46:00.000000000","message":"Yes, it is supported in part, it still not supports the port_ranges features (two new fields that are internal_port_range and external_port_range). But I could open a patch there to add it.","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"27072107659e23fc9f6ccb2c940a46b857c5d5b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"744d1123_1d1ed448","updated":"2023-02-24 19:21:23.000000000","message":"Hi, I have seen one issue with your latest Patch Set, If python-neutroclient\u003d8.0.0 \nand I open a floating Ip panel under the project dashboard, it\u0027s broken. Could you please check and confirm?","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"0dd53eba86376339e37c9590addc98e58b561a5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6378189c_5d25d3d0","updated":"2023-02-24 18:45:20.000000000","message":"recheck, timeout","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"535fb29ae4782765292a1c22106bdec0806f9ae0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"3b12b00f_2effaf66","in_reply_to":"0124d7ba_81b63422","updated":"2023-02-25 20:36:50.000000000","message":"I added a catch in the port forwardings fetch in the floating ip panel, so it should solve this error and some others errors that could happen due to problems fetching portforwardings in the floating IP panel 😊.","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"a862211d5a1f581224367c6a4ee23a29b3b51ebe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"85895329_27a91cb1","in_reply_to":"744d1123_1d1ed448","updated":"2023-02-24 19:43:15.000000000","message":"but the catch here is I enabled enable_fip_port_forwarding to True in my local.setting.py file that\u0027s why I am hitting this issue.","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"61c7a0d9d860e91dc32e661acb45cbb7af9c28ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b5941bf2_65d81c2d","in_reply_to":"85895329_27a91cb1","updated":"2023-02-24 19:44:04.000000000","message":"Can we handle this corner case?","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"ab9851bda918d36c6e404b8f4ef0f3820510a9a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b83042ee_7cd84a13","in_reply_to":"b5941bf2_65d81c2d","updated":"2023-02-24 22:51:58.000000000","message":"Sorry I didnt get it, I updated the requirements to python-neutronclient \u003e\u003d 8.1.0, maybe if you run a \u0027pip install -r requirements.txt\u0027 it should solve this problem","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6c899fba0ad2dafc93e40f718594bb2d9215e20f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"0124d7ba_81b63422","in_reply_to":"b83042ee_7cd84a13","updated":"2023-02-25 17:51:03.000000000","message":"No, the case I am discussing where a user has OPENSTACK_NEUTRON_NETWORK[\u0027enable_fip_port_forwarding\u0027] \u003d True in the ``local.settings.py`` file but he is still using python-neutronclient\u003c8.1.0\nThe floating Ip panel is broken for the user with your latest P.S. and gets this error [1]. Could we fix this case? let me know if you still didn\u0027t get my question.\n\n[1] https://paste.openstack.org/show/818895/","commit_id":"13eb40afc53c797f3463ec419ef12f44b5a94045"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"947b77de_0b670564","updated":"2023-03-01 13:43:26.000000000","message":"Hi Akihiro, thanks for your review 😊","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"c121d50e_4c400bf8","updated":"2023-02-28 11:43:20.000000000","message":"I am still in the middle way to review this.\nPerhaps I will have more comments, but this commit already has a single +2, so I am posting my comments so far to avoid merging it before I can post all my comments.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"38c1554227eeaf0a33a7387df0c6bf0acacc483f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"d5af10d9_9472c0c7","updated":"2023-02-26 16:34:20.000000000","message":"LGTM, tested with devstack working fine.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"dd92e04ab2c03f56c518bd234fe1190e77caf415","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"d0c12129_4fb362ce","updated":"2023-02-26 13:15:56.000000000","message":"recheck","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"ca0022293db69d5f8ba5353995ac0cad44cb9db0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ee1979d9_65b61351","updated":"2023-02-28 18:16:18.000000000","message":"removing my vote as amotoki comments are valid and need to be fixed to merge this patch","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"8857af5c76b8c6be7514761c3ddcda6c5b0b9500","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f9185e11_7b7491d6","in_reply_to":"d5af10d9_9472c0c7","updated":"2023-02-27 12:08:18.000000000","message":"Many thanks Vishal for your contributions 😊","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"eda249a46cab85f54ad737e1f4212e00b80a0ae5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"e7be61d5_528ad585","updated":"2023-03-06 18:16:19.000000000","message":"LGTM. All of amotoki comments are fixed in latest P.S.\nI am fine with merging this patch and if amotoki has more nit comments can be fixed\nin a follow-up patch.\n\nI will wait till tomorrow  morning, if no objection is raised. I will approve it.","commit_id":"1db1764749c397be159f620827f04360a87d20b0"}],"doc/source/configuration/settings.rst":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":1943,"context_line":""},{"line_number":1944,"context_line":"Enable or disable Floating IPs port forwarding support in the Network Floating"},{"line_number":1945,"context_line":"IPs panel. To make this feature work appropriately, you need to use Neutron"},{"line_number":1946,"context_line":"plugins with portforwarding extension support and use python-neutronclient with"},{"line_number":1947,"context_line":"version 8.1.0 or above."},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"enable_rbac_policy"},{"line_number":1950,"context_line":"##################"}],"source_content_type":"text/x-rst","patch_set":16,"id":"878f4b82_3f5b9c43","line":1947,"range":{"start_line":1946,"start_character":45,"end_line":1947,"end_character":23},"updated":"2023-02-28 11:43:20.000000000","message":"I think this is unnecessary because horizon installation requires the appropriate version.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":1943,"context_line":""},{"line_number":1944,"context_line":"Enable or disable Floating IPs port forwarding support in the Network Floating"},{"line_number":1945,"context_line":"IPs panel. To make this feature work appropriately, you need to use Neutron"},{"line_number":1946,"context_line":"plugins with portforwarding extension support and use python-neutronclient with"},{"line_number":1947,"context_line":"version 8.1.0 or above."},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"enable_rbac_policy"},{"line_number":1950,"context_line":"##################"}],"source_content_type":"text/x-rst","patch_set":16,"id":"455a30cb_aec68e59","line":1947,"range":{"start_line":1946,"start_character":45,"end_line":1947,"end_character":23},"in_reply_to":"878f4b82_3f5b9c43","updated":"2023-03-01 13:43:26.000000000","message":"Ok, agreed, by the way, as we are use the extensions API to validate if we should or not enable the portforwardings, I think that we dont need this change in the DOC, so I will remove it, what do you think?","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"}],"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":36,"context_line":"from horizon.utils.memoized import memoized"},{"line_number":37,"context_line":"from openstack_dashboard.api import base"},{"line_number":38,"context_line":"from openstack_dashboard.api import nova"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from openstack_dashboard.contrib.developer.profiler import api as profiler"},{"line_number":41,"context_line":"from openstack_dashboard import policy"},{"line_number":42,"context_line":"from openstack_dashboard.utils import settings as setting_utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"45a03ac9_01702df6","line":39,"updated":"2023-02-07 18:29:32.000000000","message":"this blank line line looks unnecessary, please remove it..","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from horizon.utils.memoized import memoized"},{"line_number":37,"context_line":"from openstack_dashboard.api import base"},{"line_number":38,"context_line":"from openstack_dashboard.api import nova"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from openstack_dashboard.contrib.developer.profiler import api as profiler"},{"line_number":41,"context_line":"from openstack_dashboard import policy"},{"line_number":42,"context_line":"from openstack_dashboard.utils import settings as setting_utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"1d1cf85e_7f479e86","line":39,"in_reply_to":"45a03ac9_01702df6","updated":"2023-02-08 13:54:26.000000000","message":"Done","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"be5eeea155fa8be70367b4de1bc7452c0ce903fe","unresolved":true,"context_lines":[{"line_number":2062,"context_line":"                                           **search_opts)"},{"line_number":2063,"context_line":""},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"def floating_ip_port_forwarding_list(request, fip):"},{"line_number":2066,"context_line":"    return PortForwardingManager(request).list(fip)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"def floating_ip_port_forwarding_create(request, fip, **params):"},{"line_number":2070,"context_line":"    return PortForwardingManager(request).create(fip, **params)"},{"line_number":2071,"context_line":""},{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"def floating_ip_port_forwarding_update(request, fip, **params):"},{"line_number":2074,"context_line":"    return PortForwardingManager(request).update(fip, **params)"},{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"def floating_ip_port_forwarding_get(request, fip, pfw):"},{"line_number":2078,"context_line":"    return PortForwardingManager(request).get(fip, pfw)"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":""},{"line_number":2081,"context_line":"def floating_ip_port_forwarding_delete(request, fip, pfw):"},{"line_number":2082,"context_line":"    return PortForwardingManager(request).delete(fip, pfw)"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"def tenant_floating_ip_get(request, floating_ip_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"d9769a7d_a88d2af1","line":2082,"range":{"start_line":2065,"start_character":0,"end_line":2082,"end_character":58},"updated":"2023-02-22 07:17:12.000000000","message":"Could you add some unit tests for this change in the ``api/test_neutron.py`` file?\n\n[1] https://github.com/openstack/horizon/blob/master/openstack_dashboard/test/unit/api/test_neutron.py","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"466b18818aad7e1ab817117062368b4db2f18a89","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"                                           **search_opts)"},{"line_number":2063,"context_line":""},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"def floating_ip_port_forwarding_list(request, fip):"},{"line_number":2066,"context_line":"    return PortForwardingManager(request).list(fip)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"def floating_ip_port_forwarding_create(request, fip, **params):"},{"line_number":2070,"context_line":"    return PortForwardingManager(request).create(fip, **params)"},{"line_number":2071,"context_line":""},{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"def floating_ip_port_forwarding_update(request, fip, **params):"},{"line_number":2074,"context_line":"    return PortForwardingManager(request).update(fip, **params)"},{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"def floating_ip_port_forwarding_get(request, fip, pfw):"},{"line_number":2078,"context_line":"    return PortForwardingManager(request).get(fip, pfw)"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":""},{"line_number":2081,"context_line":"def floating_ip_port_forwarding_delete(request, fip, pfw):"},{"line_number":2082,"context_line":"    return PortForwardingManager(request).delete(fip, pfw)"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"def tenant_floating_ip_get(request, floating_ip_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"e992e918_3906bdc5","line":2082,"range":{"start_line":2065,"start_character":0,"end_line":2082,"end_character":58},"in_reply_to":"d9769a7d_a88d2af1","updated":"2023-02-22 21:37:03.000000000","message":"Yes, sure!","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"35d462b31ecfeb09e73b14c9a61a1f4c7c00eaaa","unresolved":true,"context_lines":[{"line_number":935,"context_line":"    return c"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"def is_client_version_supported(**kwargs):"},{"line_number":939,"context_line":"    client_version \u003d neutron_client_version.semantic_version()"},{"line_number":940,"context_line":"    version_to_compare \u003d SemanticVersion(**kwargs)"},{"line_number":941,"context_line":"    return client_version \u003e\u003d version_to_compare"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":13,"id":"e0f85a62_6c7ec53b","line":941,"range":{"start_line":938,"start_character":0,"end_line":941,"end_character":47},"updated":"2023-02-24 12:04:46.000000000","message":"I discussed your patch in the last weekly meeting and amotoki who is also a neutron core raised a concern that we shouldn\u0027t do the version check in the code as we cover such kind of thing in requirements.txt. Acc. to him checking which neutron API support enable_fip_port_forwarding is enough. So remove this function from the code.\nAlso, update the version of python-neutroclient in ``reauirements.txt`` [1].\n\n\n[1] https://github.com/openstack/horizon/blob/master/requirements.txt#L40","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"a5600466e620c7235b995884b14389d976a8b297","unresolved":false,"context_lines":[{"line_number":935,"context_line":"    return c"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"def is_client_version_supported(**kwargs):"},{"line_number":939,"context_line":"    client_version \u003d neutron_client_version.semantic_version()"},{"line_number":940,"context_line":"    version_to_compare \u003d SemanticVersion(**kwargs)"},{"line_number":941,"context_line":"    return client_version \u003e\u003d version_to_compare"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":13,"id":"c6764bb1_5125c337","line":941,"range":{"start_line":938,"start_character":0,"end_line":941,"end_character":47},"in_reply_to":"e0f85a62_6c7ec53b","updated":"2023-02-24 13:46:00.000000000","message":"Ok, no problem, thanks 😊","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"}],"openstack_dashboard/dashboards/project/floating_ip_portforwardings/panel.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Cisco Systems, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"3d972293_e217c90b","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":36},"updated":"2023-02-07 18:29:32.000000000","message":"Avoid using these Copyright in all new files you have added.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"58944777f3e7f39aa55d58ac7bed079dc86541fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Cisco Systems, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"3394ef1e_0fbab1a8","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":36},"in_reply_to":"171351ab_8444c1bf","updated":"2023-02-08 19:40:17.000000000","message":"I tried","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Cisco Systems, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"171351ab_8444c1bf","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":36},"in_reply_to":"3d972293_e217c90b","updated":"2023-02-08 13:54:26.000000000","message":"Oh, ok, sorry for that, I am removing 😊","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":16,"context_line":"import horizon"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class FloatIpPortforwardingRules(horizon.Panel):"},{"line_number":20,"context_line":"    name \u003d _(\"Float IP port forwarding rules\")"},{"line_number":21,"context_line":"    slug \u003d \u0027floating_ip_portforwardings\u0027"},{"line_number":22,"context_line":"    permissions \u003d (\u0027openstack.services.network\u0027,)"}],"source_content_type":"text/x-python","patch_set":16,"id":"4710d36a_39e42abd","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":13},"updated":"2023-02-28 11:43:20.000000000","message":"\"FloatIp\" is a new abbrev for \"floating IP\" in horizon.\nWe use \"FloatingIP\" and \"FloatingIp\" (when something fllows it like FloatingIpTarget) consistently.\nCan\u0027t we use FloatingIpPortForwardingRules?\n\nThis comment applies to all \"FloatIp.....\" (and case insensitive versions).\n\nNOTE: If you feel the name is too long, there are other ways to shorten it: floating ip -\u003e fip, port fowarding -\u003e port fwd\nAt least, I think \"float ip\" is a new version.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import horizon"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class FloatIpPortforwardingRules(horizon.Panel):"},{"line_number":20,"context_line":"    name \u003d _(\"Float IP port forwarding rules\")"},{"line_number":21,"context_line":"    slug \u003d \u0027floating_ip_portforwardings\u0027"},{"line_number":22,"context_line":"    permissions \u003d (\u0027openstack.services.network\u0027,)"}],"source_content_type":"text/x-python","patch_set":16,"id":"84cad64f_49f24b75","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":13},"in_reply_to":"4710d36a_39e42abd","updated":"2023-03-01 13:43:26.000000000","message":"No problem, I can change it, there are some part of this implementation which are already using FloatingIp instead of FloatIp, I will normalize it to FloatingIp. Thanks 😊","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":25,"context_line":"    @staticmethod"},{"line_number":26,"context_line":"    def can_register():"},{"line_number":27,"context_line":"        network_config \u003d getattr(settings, \u0027OPENSTACK_NEUTRON_NETWORK\u0027, {})"},{"line_number":28,"context_line":"        return network_config.get(\u0027enable_fip_port_forwarding\u0027, False)"}],"source_content_type":"text/x-python","patch_set":16,"id":"f55cd397_094ed1eb","line":28,"updated":"2023-02-28 11:43:20.000000000","message":"Could you check the availability of FIP port fwd feature by checking the neutron extension? You can find how to do this in the trunk panel [1].\nBy doing so, no configuration will be required.\n\nNOTES: I think you referred to the router and FIP panels. They use the setting from a histrical reason that some deployments would like to provide these features via API/CLI but would not like to provide them via GUI.\n\n[1] https://opendev.org/openstack/horizon/src/branch/master/openstack_dashboard/dashboards/project/trunks/panel.py","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @staticmethod"},{"line_number":26,"context_line":"    def can_register():"},{"line_number":27,"context_line":"        network_config \u003d getattr(settings, \u0027OPENSTACK_NEUTRON_NETWORK\u0027, {})"},{"line_number":28,"context_line":"        return network_config.get(\u0027enable_fip_port_forwarding\u0027, False)"}],"source_content_type":"text/x-python","patch_set":16,"id":"28d45d6b_9d5aeafe","line":28,"in_reply_to":"f55cd397_094ed1eb","updated":"2023-03-01 13:43:26.000000000","message":"Ok, so in that case, I will remove the new configuration introduced","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"}],"openstack_dashboard/dashboards/project/floating_ip_portforwardings/tables.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":17,"context_line":"from django.urls import reverse"},{"line_number":18,"context_line":"from django.utils.http import urlencode"},{"line_number":19,"context_line":"from django.utils.translation import gettext_lazy as _"},{"line_number":20,"context_line":"from django.utils.translation import ungettext_lazy"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from horizon import tables"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e1798c26_4f75092c","line":20,"range":{"start_line":20,"start_character":37,"end_line":20,"end_character":51},"updated":"2023-02-07 18:29:32.000000000","message":"ungettext_lazy() are deprecated in favor of the ngettext_lazy() in django 4.\nSo you can use ngettext_lazy() here which now we use in horizon.\n\n[1] https://docs.djangoproject.com/en/4.0/releases/3.0/#id3","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from django.urls import reverse"},{"line_number":18,"context_line":"from django.utils.http import urlencode"},{"line_number":19,"context_line":"from django.utils.translation import gettext_lazy as _"},{"line_number":20,"context_line":"from django.utils.translation import ungettext_lazy"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from horizon import tables"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"0e88880d_3b9a0f89","line":20,"range":{"start_line":20,"start_character":37,"end_line":20,"end_character":51},"in_reply_to":"e1798c26_4f75092c","updated":"2023-02-08 13:54:26.000000000","message":"Thanks.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def single(self, data_table, request, *args):"},{"line_number":43,"context_line":"        return shortcuts.redirect("},{"line_number":44,"context_line":"            \u0027horizon:project:floating_ip_portforwardings:show\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_url_params(self, datum\u003dNone):"},{"line_number":47,"context_line":"        return urlencode({\"floating_ip_id\": self.floating_ip_id})"}],"source_content_type":"text/x-python","patch_set":6,"id":"f7eadd88_2eaa6662","line":44,"range":{"start_line":44,"start_character":57,"end_line":44,"end_character":61},"updated":"2023-02-07 18:29:32.000000000","message":"the html template path you mentioned here didn\u0027t added in this patch.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"076d8655b6dd26a91980789961b7e6d36458214f","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def single(self, data_table, request, *args):"},{"line_number":43,"context_line":"        return shortcuts.redirect("},{"line_number":44,"context_line":"            \u0027horizon:project:floating_ip_portforwardings:show\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_url_params(self, datum\u003dNone):"},{"line_number":47,"context_line":"        return urlencode({\"floating_ip_id\": self.floating_ip_id})"}],"source_content_type":"text/x-python","patch_set":6,"id":"acfa9e1b_fb6ee8c0","line":44,"range":{"start_line":44,"start_character":57,"end_line":44,"end_character":61},"in_reply_to":"4025f95e_e5391313","updated":"2023-02-08 14:14:43.000000000","message":"my bad. I got confused here with something else. Ignore this comment","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def single(self, data_table, request, *args):"},{"line_number":43,"context_line":"        return shortcuts.redirect("},{"line_number":44,"context_line":"            \u0027horizon:project:floating_ip_portforwardings:show\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_url_params(self, datum\u003dNone):"},{"line_number":47,"context_line":"        return urlencode({\"floating_ip_id\": self.floating_ip_id})"}],"source_content_type":"text/x-python","patch_set":6,"id":"4025f95e_e5391313","line":44,"range":{"start_line":44,"start_character":57,"end_line":44,"end_character":61},"in_reply_to":"f7eadd88_2eaa6662","updated":"2023-02-08 13:54:26.000000000","message":"Sorry, I didnt get it, what do you mean? This \"show\" maps to a \"DataTableView\", which is going to show all portforwardings for the given floating ip.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":83,"context_line":"                          \"pfwd_id\": portforwading_id})"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DeleteRule(tables.BatchAction):"},{"line_number":87,"context_line":"    name \u003d \"delete\""},{"line_number":88,"context_line":"    action_type \u003d \"danger\""},{"line_number":89,"context_line":"    icon \u003d \"trash\""}],"source_content_type":"text/x-python","patch_set":16,"id":"0b95ba5d_644fc342","line":86,"range":{"start_line":86,"start_character":17,"end_line":86,"end_character":35},"updated":"2023-02-28 11:43:20.000000000","message":"Why do you need to use BatchAction instead of DeleteAction?\nWe use DeleteAction consistently and I would like to keep the consistency.\nIf you see the reason to use BatchAction explicitly, please add a note on why BatchAction is required instead of BatchAction.\n\nI guess it is to inherit this","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          \"pfwd_id\": portforwading_id})"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DeleteRule(tables.BatchAction):"},{"line_number":87,"context_line":"    name \u003d \"delete\""},{"line_number":88,"context_line":"    action_type \u003d \"danger\""},{"line_number":89,"context_line":"    icon \u003d \"trash\""}],"source_content_type":"text/x-python","patch_set":16,"id":"51f07fc9_b82d213c","line":86,"range":{"start_line":86,"start_character":17,"end_line":86,"end_character":35},"in_reply_to":"0b95ba5d_644fc342","updated":"2023-03-01 13:43:26.000000000","message":"Oh, I reproduced it from the \"Release Floating IP\" action from Floating IP table, I will change it.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":90,"context_line":"    help_text \u003d _("},{"line_number":91,"context_line":"        \"This action will delete the \""},{"line_number":92,"context_line":"        \"selected floating IP port forwarding rule(s);\""},{"line_number":93,"context_line":"        \" this process cannot be undone.\")"},{"line_number":94,"context_line":"    floating_ip_id \u003d None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":16,"id":"1d097d48_b14b37cb","line":93,"updated":"2023-02-28 11:43:20.000000000","message":"Could you move the leading space to the previous line?\nIt is better to place a space consistenly when wrapping lines.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    help_text \u003d _("},{"line_number":91,"context_line":"        \"This action will delete the \""},{"line_number":92,"context_line":"        \"selected floating IP port forwarding rule(s);\""},{"line_number":93,"context_line":"        \" this process cannot be undone.\")"},{"line_number":94,"context_line":"    floating_ip_id \u003d None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":16,"id":"130b7632_0239661c","line":93,"in_reply_to":"1d097d48_b14b37cb","updated":"2023-03-01 13:43:26.000000000","message":"Done","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"}],"openstack_dashboard/dashboards/project/floating_ip_portforwardings/tests.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":28,"context_line":"from horizon.tables import views as table_views"},{"line_number":29,"context_line":"from horizon.workflows import views"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"INDEX_URL \u003d reverse(\u0027horizon:project:floating_ip_portforwardings:index\u0027)"},{"line_number":32,"context_line":"NAMESPACE \u003d \"horizon:project:floating_ip_portforwardings\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"cd055837_3fe974d6","line":31,"range":{"start_line":31,"start_character":21,"end_line":31,"end_character":70},"updated":"2023-02-07 18:29:32.000000000","message":"There is no html template added in this path.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from horizon.tables import views as table_views"},{"line_number":29,"context_line":"from horizon.workflows import views"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"INDEX_URL \u003d reverse(\u0027horizon:project:floating_ip_portforwardings:index\u0027)"},{"line_number":32,"context_line":"NAMESPACE \u003d \"horizon:project:floating_ip_portforwardings\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"054334d8_f1878c7d","line":31,"range":{"start_line":31,"start_character":21,"end_line":31,"end_character":70},"in_reply_to":"53e46e14_e574adfa","updated":"2023-02-20 18:38:56.000000000","message":"Done","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":true,"context_lines":[{"line_number":28,"context_line":"from horizon.tables import views as table_views"},{"line_number":29,"context_line":"from horizon.workflows import views"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"INDEX_URL \u003d reverse(\u0027horizon:project:floating_ip_portforwardings:index\u0027)"},{"line_number":32,"context_line":"NAMESPACE \u003d \"horizon:project:floating_ip_portforwardings\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"53e46e14_e574adfa","line":31,"range":{"start_line":31,"start_character":21,"end_line":31,"end_character":70},"in_reply_to":"cd055837_3fe974d6","updated":"2023-02-08 13:54:26.000000000","message":"I didnt get it here as well, could you explain better? sorry for that 😞","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    @test.create_mocks({api.neutron: (\u0027tenant_floating_ip_get\u0027,"},{"line_number":31,"context_line":"                                      \u0027floating_ip_port_forwarding_list\u0027)})"},{"line_number":32,"context_line":"    def test_floating_ip_portforwarding(self):"},{"line_number":33,"context_line":"        fips \u003d self._get_fip_targets()[0]"},{"line_number":34,"context_line":"        self.mock_tenant_floating_ip_get.return_value \u003d fips"},{"line_number":35,"context_line":"        fip_id \u003d fips.id"},{"line_number":36,"context_line":"        self.mock_floating_ip_port_forwarding_list.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":16,"id":"bc2721d1_342f9584","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":12},"updated":"2023-02-28 11:43:20.000000000","message":"The value stored here is a single FIP object.\nThe name \"fips\" is confusing. Could you use \"fip\" instead?\n\nThe same comment applies to all occurences below.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    @test.create_mocks({api.neutron: (\u0027tenant_floating_ip_get\u0027,"},{"line_number":31,"context_line":"                                      \u0027floating_ip_port_forwarding_list\u0027)})"},{"line_number":32,"context_line":"    def test_floating_ip_portforwarding(self):"},{"line_number":33,"context_line":"        fips \u003d self._get_fip_targets()[0]"},{"line_number":34,"context_line":"        self.mock_tenant_floating_ip_get.return_value \u003d fips"},{"line_number":35,"context_line":"        fip_id \u003d fips.id"},{"line_number":36,"context_line":"        self.mock_floating_ip_port_forwarding_list.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":16,"id":"33e775da_d7210d8f","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":12},"in_reply_to":"bc2721d1_342f9584","updated":"2023-03-01 13:43:26.000000000","message":"Done","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        params \u003d urlencode({\u0027floating_ip_id\u0027: fip_id})"},{"line_number":137,"context_line":"        url \u003d \u0027?\u0027.join([reverse(\u0027%s:create\u0027 % NAMESPACE), params])"},{"line_number":138,"context_line":"        internal_ip \u003d \u00277e6ce62c-7ea2-44f8-b6b4-769af90a8406_10.0.0.4\u0027"},{"line_number":139,"context_line":"        post_params \u003d {"},{"line_number":140,"context_line":"            \u0027floating_ip_id\u0027: fip_id,"},{"line_number":141,"context_line":"            \u0027description\u0027: \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"141bb811_c886c924","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":69},"updated":"2023-02-28 11:43:20.000000000","message":"It looks like this UUID is based on a port data in neutron_data.py.\nCould you calculate this value from the test data?","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        params \u003d urlencode({\u0027floating_ip_id\u0027: fip_id})"},{"line_number":137,"context_line":"        url \u003d \u0027?\u0027.join([reverse(\u0027%s:create\u0027 % NAMESPACE), params])"},{"line_number":138,"context_line":"        internal_ip \u003d \u00277e6ce62c-7ea2-44f8-b6b4-769af90a8406_10.0.0.4\u0027"},{"line_number":139,"context_line":"        post_params \u003d {"},{"line_number":140,"context_line":"            \u0027floating_ip_id\u0027: fip_id,"},{"line_number":141,"context_line":"            \u0027description\u0027: \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"ec4e48df_fa220506","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":69},"in_reply_to":"141bb811_c886c924","updated":"2023-03-01 13:43:26.000000000","message":"Done","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":211,"context_line":"        params \u003d urlencode({\u0027floating_ip_id\u0027: fip_id,"},{"line_number":212,"context_line":"                            \u0027pfwd_id\u0027: pfw_id})"},{"line_number":213,"context_line":"        url \u003d \u0027?\u0027.join([reverse(\u0027%s:edit\u0027 % NAMESPACE), params])"},{"line_number":214,"context_line":"        internal_ip \u003d \u00277e6ce62c-7ea2-44f8-b6b4-769af90a8406_10.0.0.4\u0027"},{"line_number":215,"context_line":"        post_params \u003d {"},{"line_number":216,"context_line":"            \u0027portforwading_id\u0027: pfw_id,"},{"line_number":217,"context_line":"            \u0027floating_ip_id\u0027: fip_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"0882c709_67bc720a","line":214,"updated":"2023-02-28 11:43:20.000000000","message":"same comment as for L.138 above.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        params \u003d urlencode({\u0027floating_ip_id\u0027: fip_id,"},{"line_number":212,"context_line":"                            \u0027pfwd_id\u0027: pfw_id})"},{"line_number":213,"context_line":"        url \u003d \u0027?\u0027.join([reverse(\u0027%s:edit\u0027 % NAMESPACE), params])"},{"line_number":214,"context_line":"        internal_ip \u003d \u00277e6ce62c-7ea2-44f8-b6b4-769af90a8406_10.0.0.4\u0027"},{"line_number":215,"context_line":"        post_params \u003d {"},{"line_number":216,"context_line":"            \u0027portforwading_id\u0027: pfw_id,"},{"line_number":217,"context_line":"            \u0027floating_ip_id\u0027: fip_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"b887c8d6_4f6f53f1","line":214,"in_reply_to":"0882c709_67bc720a","updated":"2023-03-01 13:43:26.000000000","message":"Done","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"}],"openstack_dashboard/dashboards/project/floating_ip_portforwardings/urls.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from django.urls import re_path"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstack_dashboard.dashboards.project.floating_ip_portforwardings import \\"},{"line_number":22,"context_line":"    views"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"urlpatterns \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"e9057f8c_537662ca","line":21,"range":{"start_line":21,"start_character":79,"end_line":21,"end_character":80},"updated":"2023-02-07 18:29:32.000000000","message":"avoid using backslashed in the code.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from django.urls import re_path"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstack_dashboard.dashboards.project.floating_ip_portforwardings import \\"},{"line_number":22,"context_line":"    views"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"urlpatterns \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"c5583c49_0f49d1db","line":21,"range":{"start_line":21,"start_character":79,"end_line":21,"end_character":80},"in_reply_to":"e9057f8c_537662ca","updated":"2023-02-08 13:54:26.000000000","message":"Done","commit_id":"155034be08460aa368848099639df641daa03f2e"}],"openstack_dashboard/dashboards/project/floating_ip_portforwardings/workflows.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":34,"context_line":"class CommonMetaData(object):"},{"line_number":35,"context_line":"    name \u003d _(\"Description\")"},{"line_number":36,"context_line":"    help_text \u003d _("},{"line_number":37,"context_line":"        \"\u003ch2\u003eDescription:\u003c/h2\u003e\""},{"line_number":38,"context_line":"        \"\""},{"line_number":39,"context_line":"        \"IP floating rules define external specific traffic that is bound \""},{"line_number":40,"context_line":"        \"from a public IP to an internal address of a specific port.\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7eb758d8_1de199ff","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":13},"updated":"2023-02-07 18:29:32.000000000","message":"No need to use html tags here. Follow what done here [1].\n\n[1] https://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/admin/aggregates/workflows.py#L33","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class CommonMetaData(object):"},{"line_number":35,"context_line":"    name \u003d _(\"Description\")"},{"line_number":36,"context_line":"    help_text \u003d _("},{"line_number":37,"context_line":"        \"\u003ch2\u003eDescription:\u003c/h2\u003e\""},{"line_number":38,"context_line":"        \"\""},{"line_number":39,"context_line":"        \"IP floating rules define external specific traffic that is bound \""},{"line_number":40,"context_line":"        \"from a public IP to an internal address of a specific port.\""}],"source_content_type":"text/x-python","patch_set":6,"id":"44822bd8_cf0ac7c9","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":13},"in_reply_to":"7eb758d8_1de199ff","updated":"2023-02-08 13:54:26.000000000","message":"Done","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6731ae80e8bc43e2ed2a88c07e099c71c4cd96c5","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":109,"context_line":"        super().__init__("},{"line_number":110,"context_line":"            *args, **kwargs)"},{"line_number":111,"context_line":"        floating_ip_id \u003d self.request.GET.get(\u0027floating_ip_id\u0027)"},{"line_number":112,"context_line":"        self.initial[\u0027floating_ip_id\u0027] \u003d floating_ip_id"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"a5fa1699_7f18fd1c","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":28},"updated":"2023-02-07 18:29:32.000000000","message":"move this to L109 to improve readability.","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"32da136158a4370c7d99ec0273952802cb158a96","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":109,"context_line":"        super().__init__("},{"line_number":110,"context_line":"            *args, **kwargs)"},{"line_number":111,"context_line":"        floating_ip_id \u003d self.request.GET.get(\u0027floating_ip_id\u0027)"},{"line_number":112,"context_line":"        self.initial[\u0027floating_ip_id\u0027] \u003d floating_ip_id"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"8dcf28a4_144d4435","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":28},"in_reply_to":"a5fa1699_7f18fd1c","updated":"2023-02-08 13:54:26.000000000","message":"Done","commit_id":"155034be08460aa368848099639df641daa03f2e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":42,"context_line":"        \" will be \""},{"line_number":43,"context_line":"        \"bound to the internal port in the internal address. This field\""},{"line_number":44,"context_line":"        \" allow values\""},{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""}],"source_content_type":"text/x-python","patch_set":8,"id":"6f0ec80c_59d362fb","line":45,"updated":"2023-02-20 15:59:00.000000000","message":"add a space here b/w values and between.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \" will be \""},{"line_number":43,"context_line":"        \"bound to the internal port in the internal address. This field\""},{"line_number":44,"context_line":"        \" allow values\""},{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""}],"source_content_type":"text/x-python","patch_set":8,"id":"a439cfd8_537f5855","line":45,"in_reply_to":"6f0ec80c_59d362fb","updated":"2023-02-20 18:38:56.000000000","message":"Done","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values\""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""}],"source_content_type":"text/x-python","patch_set":8,"id":"71755469_d46407e5","line":48,"updated":"2023-02-20 15:59:00.000000000","message":"add a space here.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values\""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""}],"source_content_type":"text/x-python","patch_set":8,"id":"aa0f7dca_953d3e4f","line":48,"in_reply_to":"71755469_d46407e5","updated":"2023-02-20 18:38:56.000000000","message":"Done","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values\""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":52,"context_line":"        \" format:\""},{"line_number":53,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""}],"source_content_type":"text/x-python","patch_set":8,"id":"eb9d9f48_50e13102","line":50,"updated":"2023-02-20 15:59:00.000000000","message":"add a space a here.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""},{"line_number":48,"context_line":"        \"Internal port:The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values\""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":52,"context_line":"        \" format:\""},{"line_number":53,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort\""}],"source_content_type":"text/x-python","patch_set":8,"id":"aa8a342d_531f55c2","line":50,"in_reply_to":"eb9d9f48_50e13102","updated":"2023-02-20 18:38:56.000000000","message":"Done","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":62,"context_line":"        required\u003dTrue,"},{"line_number":63,"context_line":"        choices\u003dproject_tables.PROTOCOL_CHOICES,"},{"line_number":64,"context_line":"        label\u003d_(\"Protocol\"))"},{"line_number":65,"context_line":"    external_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"External port\"))"},{"line_number":66,"context_line":"    internal_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"Internal port\"))"},{"line_number":67,"context_line":"    internal_ip_address \u003d forms.ThemableChoiceField(required\u003dTrue, label\u003d_("},{"line_number":68,"context_line":"        \"Internal IP address\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"ea7cecf3_05528308","line":65,"range":{"start_line":65,"start_character":36,"end_line":65,"end_character":49},"updated":"2023-02-20 15:59:00.000000000","message":"The maximum value you can pass here for an external port is \"65535\" which is 5 characters, then why you defined \"max_length\u003d11\" here?","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6e670fd350bfe4fdbd756f35de34329188d2cf74","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        required\u003dTrue,"},{"line_number":63,"context_line":"        choices\u003dproject_tables.PROTOCOL_CHOICES,"},{"line_number":64,"context_line":"        label\u003d_(\"Protocol\"))"},{"line_number":65,"context_line":"    external_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"External port\"))"},{"line_number":66,"context_line":"    internal_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"Internal port\"))"},{"line_number":67,"context_line":"    internal_ip_address \u003d forms.ThemableChoiceField(required\u003dTrue, label\u003d_("},{"line_number":68,"context_line":"        \"Internal IP address\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"b90b0f7f_3f025e03","line":65,"range":{"start_line":65,"start_character":36,"end_line":65,"end_character":49},"in_reply_to":"5d8dc519_7bb49e7a","updated":"2023-02-20 19:31:10.000000000","message":"ack.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        required\u003dTrue,"},{"line_number":63,"context_line":"        choices\u003dproject_tables.PROTOCOL_CHOICES,"},{"line_number":64,"context_line":"        label\u003d_(\"Protocol\"))"},{"line_number":65,"context_line":"    external_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"External port\"))"},{"line_number":66,"context_line":"    internal_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"Internal port\"))"},{"line_number":67,"context_line":"    internal_ip_address \u003d forms.ThemableChoiceField(required\u003dTrue, label\u003d_("},{"line_number":68,"context_line":"        \"Internal IP address\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5d8dc519_7bb49e7a","line":65,"range":{"start_line":65,"start_character":36,"end_line":65,"end_character":49},"in_reply_to":"ea7cecf3_05528308","updated":"2023-02-20 18:38:56.000000000","message":"Yes, the max number of characters for a single port is 5, but we are also allowed to use port ranges, which are \u003csingle_port\u003e:\u003csingle_port\u003e, so it could be a maximum of 11 characters (including the \u0027:\u0027)","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        choices\u003dproject_tables.PROTOCOL_CHOICES,"},{"line_number":64,"context_line":"        label\u003d_(\"Protocol\"))"},{"line_number":65,"context_line":"    external_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"External port\"))"},{"line_number":66,"context_line":"    internal_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"Internal port\"))"},{"line_number":67,"context_line":"    internal_ip_address \u003d forms.ThemableChoiceField(required\u003dTrue, label\u003d_("},{"line_number":68,"context_line":"        \"Internal IP address\"))"},{"line_number":69,"context_line":"    description \u003d forms.CharField(required\u003dFalse, widget\u003dforms.Textarea,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ec24c1a8_25e7e0b6","line":66,"range":{"start_line":66,"start_character":35,"end_line":66,"end_character":49},"updated":"2023-02-20 15:59:00.000000000","message":"same comment as above.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        choices\u003dproject_tables.PROTOCOL_CHOICES,"},{"line_number":64,"context_line":"        label\u003d_(\"Protocol\"))"},{"line_number":65,"context_line":"    external_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"External port\"))"},{"line_number":66,"context_line":"    internal_port \u003d forms.CharField(max_length\u003d11, label\u003d_(\"Internal port\"))"},{"line_number":67,"context_line":"    internal_ip_address \u003d forms.ThemableChoiceField(required\u003dTrue, label\u003d_("},{"line_number":68,"context_line":"        \"Internal IP address\"))"},{"line_number":69,"context_line":"    description \u003d forms.CharField(required\u003dFalse, widget\u003dforms.Textarea,"}],"source_content_type":"text/x-python","patch_set":8,"id":"107c6250_700f0fba","line":66,"range":{"start_line":66,"start_character":35,"end_line":66,"end_character":49},"in_reply_to":"ec24c1a8_25e7e0b6","updated":"2023-02-20 18:38:56.000000000","message":"Ack","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"9f1d1fa191eaaac6c20b8df042062bc014e71b65","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        \"Description:\""},{"line_number":36,"context_line":"        \"\""},{"line_number":37,"context_line":"        \"IP floating rules define external specific traffic that is bound \""},{"line_number":38,"context_line":"        \"from a public IP to an internal address of a specific port. \""},{"line_number":39,"context_line":"        \"Protocol: The protocol configured for the IP forwarding rule. \""},{"line_number":40,"context_line":"        \"You can choose between TCP and UDP. \""},{"line_number":41,"context_line":"        \"External port: The external port of the floating IP that\""}],"source_content_type":"text/x-python","patch_set":9,"id":"52089da5_006187d5","line":38,"range":{"start_line":38,"start_character":68,"end_line":38,"end_character":69},"updated":"2023-02-20 20:19:32.000000000","message":"Consider adding \\n here to move Protocol to the next line because it is merged with the description and does not look good on the UI side. Follow the same thing for other fields like \u0027External port\u0027 etc.\nSee https://ibb.co/S5wKKcJ","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"d7801bda89de52370ac72bb57bc1a9da44d32f20","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        \"Description:\""},{"line_number":36,"context_line":"        \"\""},{"line_number":37,"context_line":"        \"IP floating rules define external specific traffic that is bound \""},{"line_number":38,"context_line":"        \"from a public IP to an internal address of a specific port. \""},{"line_number":39,"context_line":"        \"Protocol: The protocol configured for the IP forwarding rule. \""},{"line_number":40,"context_line":"        \"You can choose between TCP and UDP. \""},{"line_number":41,"context_line":"        \"External port: The external port of the floating IP that\""}],"source_content_type":"text/x-python","patch_set":9,"id":"e1d254e0_0e11d3c5","line":38,"range":{"start_line":38,"start_character":68,"end_line":38,"end_character":69},"in_reply_to":"52089da5_006187d5","updated":"2023-02-20 21:13:15.000000000","message":"Nice, thanks, done!","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"a6f673fc76b262b1c705fc694540310c46632351","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        \"bound to the internal port in the internal address. This field\""},{"line_number":44,"context_line":"        \" allow values \""},{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort.\\n\""},{"line_number":48,"context_line":"        \"Internal port: The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""}],"source_content_type":"text/x-python","patch_set":10,"id":"8d79774f_77805950","line":46,"updated":"2023-02-21 08:38:55.000000000","message":"super nit: you could have used \\n here as well to move \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort.\" in the next line.","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1f4a8c7ae6a02277b294291679ab7f6a4a032c7c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \"bound to the internal port in the internal address. This field\""},{"line_number":44,"context_line":"        \" allow values \""},{"line_number":45,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":46,"context_line":"        \" format: \""},{"line_number":47,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort.\\n\""},{"line_number":48,"context_line":"        \"Internal port: The internal port of the given internal IP \""},{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""}],"source_content_type":"text/x-python","patch_set":10,"id":"533a9e4e_cac1be86","line":46,"in_reply_to":"8d79774f_77805950","updated":"2023-02-21 19:47:17.000000000","message":"Ack","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"a6f673fc76b262b1c705fc694540310c46632351","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values \""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":52,"context_line":"        \" format:\""},{"line_number":53,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort.\\n\""},{"line_number":54,"context_line":"        \"Internal IP address: The internal IP address where the \""},{"line_number":55,"context_line":"        \"internal ports will be running.\\n\""}],"source_content_type":"text/x-python","patch_set":10,"id":"148f15f7_00b98cbb","line":52,"updated":"2023-02-21 08:38:55.000000000","message":"same comment as above.","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1f4a8c7ae6a02277b294291679ab7f6a4a032c7c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"address that will be bound to the port that is exposed to the \""},{"line_number":50,"context_line":"        \"internet via the public floating IP. This field allow values \""},{"line_number":51,"context_line":"        \"between 1 and 65535 and also support ranges using the following\""},{"line_number":52,"context_line":"        \" format:\""},{"line_number":53,"context_line":"        \"InitialPort:FinalPort where InitialPort \u003c\u003d FinalPort.\\n\""},{"line_number":54,"context_line":"        \"Internal IP address: The internal IP address where the \""},{"line_number":55,"context_line":"        \"internal ports will be running.\\n\""}],"source_content_type":"text/x-python","patch_set":10,"id":"a76c2ca5_6af02f09","line":52,"in_reply_to":"148f15f7_00b98cbb","updated":"2023-02-21 19:47:17.000000000","message":"Ack","commit_id":"4b72623933dcb06b5e9c3c8fb3f4daf40c0647a1"}],"openstack_dashboard/dashboards/project/floating_ips/tables.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"643f46a4da2731304b98e2466bfd1fd0b4d6bb9f","unresolved":true,"context_lines":[{"line_number":32,"context_line":"from openstack_dashboard.usage import quotas"},{"line_number":33,"context_line":"from openstack_dashboard.utils import filters"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8a70257d_f5b09924","side":"PARENT","line":35,"updated":"2022-12-26 17:40:32.000000000","message":"unrelated change","commit_id":"0add65eddcd6e70d4fbe76951d76c66ecc1a34b3"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"5d565bdad85661fcec1656ac39c0d5336bca988b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from openstack_dashboard.usage import quotas"},{"line_number":33,"context_line":"from openstack_dashboard.utils import filters"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fd14aa7c_7eb1307d","side":"PARENT","line":35,"in_reply_to":"8a70257d_f5b09924","updated":"2022-12-26 19:40:04.000000000","message":"Done","commit_id":"0add65eddcd6e70d4fbe76951d76c66ecc1a34b3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"643f46a4da2731304b98e2466bfd1fd0b4d6bb9f","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def allowed(self, request, fip\u003dNone):"},{"line_number":50,"context_line":"        usages \u003d quotas.tenant_quota_usages(request,"},{"line_number":51,"context_line":"                                            targets\u003d(\u0027floatingip\u0027, ))"},{"line_number":52,"context_line":"        if \u0027floatingip\u0027 in usages and usages[\u0027floatingip\u0027][\u0027available\u0027] \u003c\u003d 0:"},{"line_number":53,"context_line":"            if \"disabled\" not in self.classes:"},{"line_number":54,"context_line":"                self.classes \u003d list(self.classes) + [\u0027disabled\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"e11a2868_a608aad2","side":"PARENT","line":51,"updated":"2022-12-26 17:40:32.000000000","message":"unrelated change","commit_id":"0add65eddcd6e70d4fbe76951d76c66ecc1a34b3"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"5d565bdad85661fcec1656ac39c0d5336bca988b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def allowed(self, request, fip\u003dNone):"},{"line_number":50,"context_line":"        usages \u003d quotas.tenant_quota_usages(request,"},{"line_number":51,"context_line":"                                            targets\u003d(\u0027floatingip\u0027, ))"},{"line_number":52,"context_line":"        if \u0027floatingip\u0027 in usages and usages[\u0027floatingip\u0027][\u0027available\u0027] \u003c\u003d 0:"},{"line_number":53,"context_line":"            if \"disabled\" not in self.classes:"},{"line_number":54,"context_line":"                self.classes \u003d list(self.classes) + [\u0027disabled\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"cff1d150_9b971271","side":"PARENT","line":51,"in_reply_to":"e11a2868_a608aad2","updated":"2022-12-26 19:40:04.000000000","message":"Done","commit_id":"0add65eddcd6e70d4fbe76951d76c66ecc1a34b3"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6fb80893d19da8b0b831acd9eecd47ecae85d807","unresolved":true,"context_lines":[{"line_number":318,"context_line":"            FloatingIPsFilterAction)"},{"line_number":319,"context_line":"        row_actions \u003d (AssociateIP, DisassociateIP, ReleaseIPs,"},{"line_number":320,"context_line":"                       ConfigureFloatingIpPortForwarding,"},{"line_number":321,"context_line":"                       ReleaseIPsPortForwarding)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dec9c5e8_2d8fff7b","line":321,"range":{"start_line":321,"start_character":23,"end_line":321,"end_character":47},"updated":"2023-02-20 15:59:00.000000000","message":"I am unable to see this action added in my env. Could you please check and confirm?\nhttps://ibb.co/Ld2pmKM","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6e670fd350bfe4fdbd756f35de34329188d2cf74","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            FloatingIPsFilterAction)"},{"line_number":319,"context_line":"        row_actions \u003d (AssociateIP, DisassociateIP, ReleaseIPs,"},{"line_number":320,"context_line":"                       ConfigureFloatingIpPortForwarding,"},{"line_number":321,"context_line":"                       ReleaseIPsPortForwarding)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bb34605d_aa194a9d","line":321,"range":{"start_line":321,"start_character":23,"end_line":321,"end_character":47},"in_reply_to":"06050cb1_3332d387","updated":"2023-02-20 19:31:10.000000000","message":"ack, thanks.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            FloatingIPsFilterAction)"},{"line_number":319,"context_line":"        row_actions \u003d (AssociateIP, DisassociateIP, ReleaseIPs,"},{"line_number":320,"context_line":"                       ConfigureFloatingIpPortForwarding,"},{"line_number":321,"context_line":"                       ReleaseIPsPortForwarding)"}],"source_content_type":"text/x-python","patch_set":8,"id":"06050cb1_3332d387","line":321,"range":{"start_line":321,"start_character":23,"end_line":321,"end_character":47},"in_reply_to":"17443bfd_9373de58","updated":"2023-02-20 18:38:56.000000000","message":"Hello Vishal, you are correct, this action is not displayed indeed, I found a problem when fetching the floating ips, the neutron api is not fetching the portforwardings, so I had to add a new step when fetching the floating ips to fetch the pfws as well. Thanks for your findings and sorry for this bug.\n\nAbout the action. When there is some pfw assigned to a floating IP, the user cannot release the IP unless the user remove all the pfws assignments of this floating ip, so this action is basically to redirect the user to the pfws panel where the user can check the pfws and release all of them, to then release the floating ip. PS the action has the same name as the ReleaseIPs action.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"4a1720a383e98baad8232bfba608a363337241b0","unresolved":true,"context_lines":[{"line_number":318,"context_line":"            FloatingIPsFilterAction)"},{"line_number":319,"context_line":"        row_actions \u003d (AssociateIP, DisassociateIP, ReleaseIPs,"},{"line_number":320,"context_line":"                       ConfigureFloatingIpPortForwarding,"},{"line_number":321,"context_line":"                       ReleaseIPsPortForwarding)"}],"source_content_type":"text/x-python","patch_set":8,"id":"17443bfd_9373de58","line":321,"range":{"start_line":321,"start_character":23,"end_line":321,"end_character":47},"in_reply_to":"dec9c5e8_2d8fff7b","updated":"2023-02-20 17:19:27.000000000","message":"Can you elaborate on the case when I can use \"ReleaseIPsPortForwarding\", so I can test the same in my local env? If I have a floating IP that is associated with a VM(instance) then I am not able to add FloatingIpPortForwarding Rule for that Floating IP and If a Floating IP already has some FloatingIpPortForwarding Rule then I am unable to associate it with a VM. So I am just wondering when ReleaseIpPortForwarding will be used. Please correct me If I am wrong?","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"9f1d1fa191eaaac6c20b8df042062bc014e71b65","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        )"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def allowed(self, request, fip\u003dNone):"},{"line_number":130,"context_line":"        policy_rules \u003d ((\"network\", \"delete_floatingip\"),)"},{"line_number":131,"context_line":"        pwds \u003d fip.port_forwardings"},{"line_number":132,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":133,"context_line":"            major\u003d8, minor\u003d1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"a1de0ce7_8d484444","line":130,"range":{"start_line":130,"start_character":37,"end_line":130,"end_character":54},"updated":"2023-02-20 20:19:32.000000000","message":"Don\u0027t we need to use \"delete_floatingip_port_forwarding\" policy rule here?\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/conf/default_policies/neutron.yaml#L632","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"d7801bda89de52370ac72bb57bc1a9da44d32f20","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        )"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def allowed(self, request, fip\u003dNone):"},{"line_number":130,"context_line":"        policy_rules \u003d ((\"network\", \"delete_floatingip\"),)"},{"line_number":131,"context_line":"        pwds \u003d fip.port_forwardings"},{"line_number":132,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":133,"context_line":"            major\u003d8, minor\u003d1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"4779dc39_834112a7","line":130,"range":{"start_line":130,"start_character":37,"end_line":130,"end_character":54},"in_reply_to":"a1de0ce7_8d484444","updated":"2023-02-20 21:13:15.000000000","message":"Yes, you are totally right, I missed these policies stuff, many thanks!!","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"9f1d1fa191eaaac6c20b8df042062bc014e71b65","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    def allowed(self, request, fip):"},{"line_number":180,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":181,"context_line":"            major\u003d8, minor\u003d1)"},{"line_number":182,"context_line":"        policy_rules \u003d ((\"network\", \"update_floatingip\"),)"},{"line_number":183,"context_line":"        return (self.exists_floating_ip_with_port_forwarding_rules_configurable("},{"line_number":184,"context_line":"                request) and policy.check(policy_rules, request) and"},{"line_number":185,"context_line":"                cli_supports_pfw)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6ec0e638_9fbe8f7f","line":182,"range":{"start_line":182,"start_character":37,"end_line":182,"end_character":54},"updated":"2023-02-20 20:19:32.000000000","message":"I guess we should use the \"get_floatingip_port_forwarding\" policy rule here?\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/conf/default_policies/neutron.yaml#L607","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"d7801bda89de52370ac72bb57bc1a9da44d32f20","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    def allowed(self, request, fip):"},{"line_number":180,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":181,"context_line":"            major\u003d8, minor\u003d1)"},{"line_number":182,"context_line":"        policy_rules \u003d ((\"network\", \"update_floatingip\"),)"},{"line_number":183,"context_line":"        return (self.exists_floating_ip_with_port_forwarding_rules_configurable("},{"line_number":184,"context_line":"                request) and policy.check(policy_rules, request) and"},{"line_number":185,"context_line":"                cli_supports_pfw)"}],"source_content_type":"text/x-python","patch_set":9,"id":"0daf534a_73927aef","line":182,"range":{"start_line":182,"start_character":37,"end_line":182,"end_character":54},"in_reply_to":"6ec0e638_9fbe8f7f","updated":"2023-02-20 21:13:15.000000000","message":"Done","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"9f1d1fa191eaaac6c20b8df042062bc014e71b65","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def allowed(self, request, fip):"},{"line_number":195,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":196,"context_line":"            major\u003d8, minor\u003d1)"},{"line_number":197,"context_line":"        policy_rules \u003d ((\"network\", \"update_floatingip\"),)"},{"line_number":198,"context_line":"        return not fip.port_id and policy.check("},{"line_number":199,"context_line":"            policy_rules, request) and cli_supports_pfw"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5215d162_f4105bc1","line":197,"range":{"start_line":197,"start_character":37,"end_line":197,"end_character":54},"updated":"2023-02-20 20:19:32.000000000","message":"we should use \"create_floatingip_port_forwarding\" policy check here\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/conf/default_policies/neutron.yaml#L594","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"d7801bda89de52370ac72bb57bc1a9da44d32f20","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def allowed(self, request, fip):"},{"line_number":195,"context_line":"        cli_supports_pfw \u003d api.neutron.is_client_version_supported("},{"line_number":196,"context_line":"            major\u003d8, minor\u003d1)"},{"line_number":197,"context_line":"        policy_rules \u003d ((\"network\", \"update_floatingip\"),)"},{"line_number":198,"context_line":"        return not fip.port_id and policy.check("},{"line_number":199,"context_line":"            policy_rules, request) and cli_supports_pfw"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9dc45f52_3473e166","line":197,"range":{"start_line":197,"start_character":37,"end_line":197,"end_character":54},"in_reply_to":"5215d162_f4105bc1","updated":"2023-02-20 21:13:15.000000000","message":"Done","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":209,"context_line":"            fip \u003d table.get_object_by_id(filters.get_int_or_uuid(obj_id))"},{"line_number":210,"context_line":"        except Exception as ex:"},{"line_number":211,"context_line":"            err_msg \u003d \u0027Unable to find a floating IP.\u0027"},{"line_number":212,"context_line":"            LOG.exception(err_msg, ex)"},{"line_number":213,"context_line":"            exceptions.handle(request,"},{"line_number":214,"context_line":"                              _(err_msg))"},{"line_number":215,"context_line":"        return shortcuts.redirect("}],"source_content_type":"text/x-python","patch_set":16,"id":"41fcba8d_9509edbd","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":25},"updated":"2023-02-28 11:43:20.000000000","message":"Use a normal log level. LOG.exception (and LOG.error) should be used only when it is a logic error in horizon code. However, \"Unable to find a floating IP\" does not sounds a horizon code error.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            fip \u003d table.get_object_by_id(filters.get_int_or_uuid(obj_id))"},{"line_number":210,"context_line":"        except Exception as ex:"},{"line_number":211,"context_line":"            err_msg \u003d \u0027Unable to find a floating IP.\u0027"},{"line_number":212,"context_line":"            LOG.exception(err_msg, ex)"},{"line_number":213,"context_line":"            exceptions.handle(request,"},{"line_number":214,"context_line":"                              _(err_msg))"},{"line_number":215,"context_line":"        return shortcuts.redirect("}],"source_content_type":"text/x-python","patch_set":16,"id":"00456379_fc2c31b3","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":25},"in_reply_to":"41fcba8d_9509edbd","updated":"2023-03-01 13:43:26.000000000","message":"Ack","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b61f9ad420bb7bed37b368405ea83376dbeaace3","unresolved":true,"context_lines":[{"line_number":211,"context_line":"            err_msg \u003d \u0027Unable to find a floating IP.\u0027"},{"line_number":212,"context_line":"            LOG.exception(err_msg, ex)"},{"line_number":213,"context_line":"            exceptions.handle(request,"},{"line_number":214,"context_line":"                              _(err_msg))"},{"line_number":215,"context_line":"        return shortcuts.redirect("},{"line_number":216,"context_line":"            reverse(\u0027horizon:project:floating_ip_portforwardings:show\u0027) +"},{"line_number":217,"context_line":"            \u0027?floating_ip_id\u003d\u0027 + str(fip.id))"}],"source_content_type":"text/x-python","patch_set":16,"id":"eb5dd046_5b3755c1","line":214,"range":{"start_line":214,"start_character":30,"end_line":214,"end_character":39},"updated":"2023-02-28 11:43:20.000000000","message":"This usage of the translation marker does not work as the string is calculated dynamically.\nInstead, you need to use \n\n _(\u0027Unable to find a floating IP.\u0027)\n \nexplicitly even if it is redundant.","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"25fdb4e82ff33ba547275391a38fc6c27a046c36","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            err_msg \u003d \u0027Unable to find a floating IP.\u0027"},{"line_number":212,"context_line":"            LOG.exception(err_msg, ex)"},{"line_number":213,"context_line":"            exceptions.handle(request,"},{"line_number":214,"context_line":"                              _(err_msg))"},{"line_number":215,"context_line":"        return shortcuts.redirect("},{"line_number":216,"context_line":"            reverse(\u0027horizon:project:floating_ip_portforwardings:show\u0027) +"},{"line_number":217,"context_line":"            \u0027?floating_ip_id\u003d\u0027 + str(fip.id))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1595f569_330decf4","line":214,"range":{"start_line":214,"start_character":30,"end_line":214,"end_character":39},"in_reply_to":"eb5dd046_5b3755c1","updated":"2023-03-01 13:43:26.000000000","message":"Done","commit_id":"8ac91b920fbdca5fca541fa55397cee9f69313b6"}],"openstack_dashboard/dashboards/project/floating_ips/views.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"6e670fd350bfe4fdbd756f35de34329188d2cf74","unresolved":true,"context_lines":[{"line_number":132,"context_line":"        for ip in floating_ips:"},{"line_number":133,"context_line":"            ip.instance_name \u003d instances_dict.get(ip.instance_id)"},{"line_number":134,"context_line":"            ip.pool_name \u003d pool_dict.get(ip.pool, ip.pool)"},{"line_number":135,"context_line":"            if api.neutron.is_client_version_supported(major\u003d8, minor\u003d1):"},{"line_number":136,"context_line":"                pfws \u003d api.neutron.floating_ip_port_forwarding_list("},{"line_number":137,"context_line":"                    self.request, ip.id)"},{"line_number":138,"context_line":"                ip.port_forwardings \u003d pfws"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return floating_ips"}],"source_content_type":"text/x-python","patch_set":9,"id":"ca44f965_b11eadda","line":138,"range":{"start_line":135,"start_character":12,"end_line":138,"end_character":42},"updated":"2023-02-20 19:31:10.000000000","message":"-1, I don\u0027t think this condition needs to be added here because you already added it in the ``panel.py`` and ``tables.py`` files. Do we need to add this condition here as well?","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"e07ae5796931d27fd4334b9ebbe373d4779baa9e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        for ip in floating_ips:"},{"line_number":133,"context_line":"            ip.instance_name \u003d instances_dict.get(ip.instance_id)"},{"line_number":134,"context_line":"            ip.pool_name \u003d pool_dict.get(ip.pool, ip.pool)"},{"line_number":135,"context_line":"            if api.neutron.is_client_version_supported(major\u003d8, minor\u003d1):"},{"line_number":136,"context_line":"                pfws \u003d api.neutron.floating_ip_port_forwarding_list("},{"line_number":137,"context_line":"                    self.request, ip.id)"},{"line_number":138,"context_line":"                ip.port_forwardings \u003d pfws"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return floating_ips"}],"source_content_type":"text/x-python","patch_set":9,"id":"e467ccb1_c1c6088a","line":138,"range":{"start_line":135,"start_character":12,"end_line":138,"end_character":42},"in_reply_to":"74743654_d84097a1","updated":"2023-02-20 20:23:20.000000000","message":"ack, gotcha.\nthanks","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"d0551cebb6181e66f8afcc9a9c900dbd8fb0a8a4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        for ip in floating_ips:"},{"line_number":133,"context_line":"            ip.instance_name \u003d instances_dict.get(ip.instance_id)"},{"line_number":134,"context_line":"            ip.pool_name \u003d pool_dict.get(ip.pool, ip.pool)"},{"line_number":135,"context_line":"            if api.neutron.is_client_version_supported(major\u003d8, minor\u003d1):"},{"line_number":136,"context_line":"                pfws \u003d api.neutron.floating_ip_port_forwarding_list("},{"line_number":137,"context_line":"                    self.request, ip.id)"},{"line_number":138,"context_line":"                ip.port_forwardings \u003d pfws"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return floating_ips"}],"source_content_type":"text/x-python","patch_set":9,"id":"74743654_d84097a1","line":138,"range":{"start_line":135,"start_character":12,"end_line":138,"end_character":42},"in_reply_to":"ca44f965_b11eadda","updated":"2023-02-20 20:11:10.000000000","message":"Yes, we do, otherwise, if we are fetching the floating ips in an older version of neutronclient, when we are fetching the pfws, it is going to raise an error because the neutronclient does not have the list port forwarding function.","commit_id":"86e72a555ec7521dcda4c22e2e4895142c28b671"}],"openstack_dashboard/test/unit/api/test_neutron.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"b82f2571401d926b48d893df9ab2324f06364453","unresolved":true,"context_lines":[{"line_number":2328,"context_line":"        self.client_mock \u003d neutronclient.return_value"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"    def test_port_forwarding_list(self):"},{"line_number":2331,"context_line":"        pfws \u003d {"},{"line_number":2332,"context_line":"            \"port_forwardings\": ["},{"line_number":2333,"context_line":"                {"},{"line_number":2334,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2335,"context_line":"                    \"internal_ip_address\": \"10.0.0.24\","},{"line_number":2336,"context_line":"                    \"internal_port\": 25,"},{"line_number":2337,"context_line":"                    \"internal_port_id\": \"070ef0b2-0175-4299-be5c-01fea8cca522\","},{"line_number":2338,"context_line":"                    \"external_port\": 2229,"},{"line_number":2339,"context_line":"                    \"internal_port_range\": \"25:25\","},{"line_number":2340,"context_line":"                    \"external_port_range\": \"2229:2229\","},{"line_number":2341,"context_line":"                    \"description\": \"Some description\","},{"line_number":2342,"context_line":"                    \"id\": \"1798dc82-c0ed-4b79-b12d-4c3c18f90eb2\""},{"line_number":2343,"context_line":"                },"},{"line_number":2344,"context_line":"                {"},{"line_number":2345,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2346,"context_line":"                    \"internal_ip_address\": \"10.0.0.11\","},{"line_number":2347,"context_line":"                    \"internal_port\": 25,"},{"line_number":2348,"context_line":"                    \"internal_port_id\": \"1238be08-a2a8-4b8d-addf-fb5e2250e480\","},{"line_number":2349,"context_line":"                    \"external_port\": 2230,"},{"line_number":2350,"context_line":"                    \"internal_port_range\": \"25:25\","},{"line_number":2351,"context_line":"                    \"external_port_range\": \"2230:2230\","},{"line_number":2352,"context_line":"                    \"description\": \"\","},{"line_number":2353,"context_line":"                    \"id\": \"e0a0274e-4d19-4eab-9e12-9e77a8caf3ea\""},{"line_number":2354,"context_line":"                },"},{"line_number":2355,"context_line":"                {"},{"line_number":2356,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2357,"context_line":"                    \"internal_port\": 80,"},{"line_number":2358,"context_line":"                    \"external_port\": 8080,"},{"line_number":2359,"context_line":"                    \"internal_ip_address\": \"10.0.0.12\","},{"line_number":2360,"context_line":"                    \"internal_port_range\": \"80:90\","},{"line_number":2361,"context_line":"                    \"internal_port_id\": \"2057ec54-8be2-11eb-8dcd-0242ac130003\","},{"line_number":2362,"context_line":"                    \"external_port_range\": \"8080:8090\","},{"line_number":2363,"context_line":"                    \"description\": \"using port ranges\","},{"line_number":2364,"context_line":"                    \"id\": \"0f23a90a-8be2-11eb-8dcd-0242ac130003\""},{"line_number":2365,"context_line":"                }"},{"line_number":2366,"context_line":"            ]"},{"line_number":2367,"context_line":"        }"},{"line_number":2368,"context_line":"        self.client_mock.list_port_forwardings.return_value \u003d pfws"},{"line_number":2369,"context_line":"        response \u003d api.neutron.floating_ip_port_forwarding_list("},{"line_number":2370,"context_line":"            self.request, \u0027fip\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"50ce60b1_dafabd72","line":2367,"range":{"start_line":2331,"start_character":7,"end_line":2367,"end_character":9},"updated":"2023-02-24 12:58:05.000000000","message":"In horizon we add such test data for neutron in ``neutron_data.py`` file [1].\nSo please follow the same here.\n\n[1] https://github.com/openstack/horizon/blob/master/openstack_dashboard/test/test_data/neutron_data.py","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"b56d470cd903e50a6e6077e99bb8601e82ab4aa9","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"        self.client_mock \u003d neutronclient.return_value"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"    def test_port_forwarding_list(self):"},{"line_number":2331,"context_line":"        pfws \u003d {"},{"line_number":2332,"context_line":"            \"port_forwardings\": ["},{"line_number":2333,"context_line":"                {"},{"line_number":2334,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2335,"context_line":"                    \"internal_ip_address\": \"10.0.0.24\","},{"line_number":2336,"context_line":"                    \"internal_port\": 25,"},{"line_number":2337,"context_line":"                    \"internal_port_id\": \"070ef0b2-0175-4299-be5c-01fea8cca522\","},{"line_number":2338,"context_line":"                    \"external_port\": 2229,"},{"line_number":2339,"context_line":"                    \"internal_port_range\": \"25:25\","},{"line_number":2340,"context_line":"                    \"external_port_range\": \"2229:2229\","},{"line_number":2341,"context_line":"                    \"description\": \"Some description\","},{"line_number":2342,"context_line":"                    \"id\": \"1798dc82-c0ed-4b79-b12d-4c3c18f90eb2\""},{"line_number":2343,"context_line":"                },"},{"line_number":2344,"context_line":"                {"},{"line_number":2345,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2346,"context_line":"                    \"internal_ip_address\": \"10.0.0.11\","},{"line_number":2347,"context_line":"                    \"internal_port\": 25,"},{"line_number":2348,"context_line":"                    \"internal_port_id\": \"1238be08-a2a8-4b8d-addf-fb5e2250e480\","},{"line_number":2349,"context_line":"                    \"external_port\": 2230,"},{"line_number":2350,"context_line":"                    \"internal_port_range\": \"25:25\","},{"line_number":2351,"context_line":"                    \"external_port_range\": \"2230:2230\","},{"line_number":2352,"context_line":"                    \"description\": \"\","},{"line_number":2353,"context_line":"                    \"id\": \"e0a0274e-4d19-4eab-9e12-9e77a8caf3ea\""},{"line_number":2354,"context_line":"                },"},{"line_number":2355,"context_line":"                {"},{"line_number":2356,"context_line":"                    \"protocol\": \"tcp\","},{"line_number":2357,"context_line":"                    \"internal_port\": 80,"},{"line_number":2358,"context_line":"                    \"external_port\": 8080,"},{"line_number":2359,"context_line":"                    \"internal_ip_address\": \"10.0.0.12\","},{"line_number":2360,"context_line":"                    \"internal_port_range\": \"80:90\","},{"line_number":2361,"context_line":"                    \"internal_port_id\": \"2057ec54-8be2-11eb-8dcd-0242ac130003\","},{"line_number":2362,"context_line":"                    \"external_port_range\": \"8080:8090\","},{"line_number":2363,"context_line":"                    \"description\": \"using port ranges\","},{"line_number":2364,"context_line":"                    \"id\": \"0f23a90a-8be2-11eb-8dcd-0242ac130003\""},{"line_number":2365,"context_line":"                }"},{"line_number":2366,"context_line":"            ]"},{"line_number":2367,"context_line":"        }"},{"line_number":2368,"context_line":"        self.client_mock.list_port_forwardings.return_value \u003d pfws"},{"line_number":2369,"context_line":"        response \u003d api.neutron.floating_ip_port_forwarding_list("},{"line_number":2370,"context_line":"            self.request, \u0027fip\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"db50b93c_6d05bfde","line":2367,"range":{"start_line":2331,"start_character":7,"end_line":2367,"end_character":9},"in_reply_to":"50ce60b1_dafabd72","updated":"2023-02-24 15:52:20.000000000","message":"Sure!","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"}],"releasenotes/notes/add-support-to-floating-ip-port-forwardings-3d0d43a2d997ce79.yaml":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5b9dd12cc104be8e83ebae0ffe05530901b7e31b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support to portforwardings in the Network Floating IPs dashboard."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"58acd152_289c5976","line":2,"updated":"2023-02-20 14:52:14.000000000","message":"Could you mention here the minimum version of the python-neutronclient required for this feature to work.","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"90b0000eb53a35914579216f29239d92cd93a3b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support to portforwardings in the Network Floating IPs dashboard."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"58978946_7730ed9f","line":2,"in_reply_to":"58acd152_289c5976","updated":"2023-02-20 18:38:56.000000000","message":"Done","commit_id":"b62e0afb7aa8f33dfb5e1fa22a9fa50dfe6826c7"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"be5eeea155fa8be70367b4de1bc7452c0ce903fe","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    Requires python-neutronclient \u003e\u003d 8.1.0"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable it, add the following entry in your custom_settings file."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    from openstack_dashboard import settings"},{"line_number":11,"context_line":"    settings.OPENSTACK_NEUTRON_NETWORK[\u0027enable_fip_port_forwarding\u0027] \u003d True"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"37501c81_f63acc08","line":8,"range":{"start_line":8,"start_character":50,"end_line":8,"end_character":65},"updated":"2023-02-22 07:17:12.000000000","message":"``local.settings.py`` file.","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"466b18818aad7e1ab817117062368b4db2f18a89","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    Requires python-neutronclient \u003e\u003d 8.1.0"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable it, add the following entry in your custom_settings file."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    from openstack_dashboard import settings"},{"line_number":11,"context_line":"    settings.OPENSTACK_NEUTRON_NETWORK[\u0027enable_fip_port_forwarding\u0027] \u003d True"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"791bd6fc_21797da7","line":8,"range":{"start_line":8,"start_character":50,"end_line":8,"end_character":65},"in_reply_to":"37501c81_f63acc08","updated":"2023-02-22 21:37:03.000000000","message":"Done","commit_id":"61273cdc081d8db207fcfbbdd1350f17e4092bbd"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"35d462b31ecfeb09e73b14c9a61a1f4c7c00eaaa","unresolved":true,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable it, add the following entry in your `local.settings.py` file."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    from openstack_dashboard import settings"},{"line_number":11,"context_line":"    settings.OPENSTACK_NEUTRON_NETWORK[\u0027enable_fip_port_forwarding\u0027] \u003d True"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"beab65cd_6c0a96ff","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":75},"updated":"2023-02-24 12:04:46.000000000","message":"TBH, I am not sure if we should mention this in the release notes.\nIf we can only mention here, that it is disabled by default, and if\nyou want to use it you have enabled it. But let\u0027s see what other reviewers say.","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"a5600466e620c7235b995884b14389d976a8b297","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable it, add the following entry in your `local.settings.py` file."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    from openstack_dashboard import settings"},{"line_number":11,"context_line":"    settings.OPENSTACK_NEUTRON_NETWORK[\u0027enable_fip_port_forwarding\u0027] \u003d True"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fd845358_2b10d7ce","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":75},"in_reply_to":"beab65cd_6c0a96ff","updated":"2023-02-24 13:46:00.000000000","message":"See no problem removing it from here, I could leave only the information that the feature is disabled by default and if the user wants to enable it, the one could check in the documentation to check how to do it.","commit_id":"fb448c95dee225aafe604981a91ea6b2e88fe16a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"96874663139fa63cabbb4a71240ef24c9d4ba1f5","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    Requires python-neutronclient \u003e\u003d 8.1.0"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    This feature is disabled by default."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"455c310f_c11e656c","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":40},"updated":"2023-03-13 18:02:15.000000000","message":"IMO we should remove this line from the release note because it now depends on if the neutron extension supports  FIP port fwd feature or not.","commit_id":"1db1764749c397be159f620827f04360a87d20b0"}]}
