)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c0d1c19ff84db89abfe5b7c936cc456e42d44276","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8dfe9cb6_c675d416","updated":"2022-09-23 14:53:20.000000000","message":"I think we should have some fullstack and tempest test to check this feature is actually working. In other words, an haproxy instance running with this new config.","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7139eca07efac96ba5e60bedd3b1afef39721fab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"19d1bdfd_ddb39b40","updated":"2022-09-30 07:36:48.000000000","message":"hmmm, the tempest failures seems related (I don\u0027t see exactly how) in dhcp agent for example:\nSep 22 15:42:06.988306 nested-virt-ubuntu-focal-ovh-bhs1-0031267762 neutron-dhcp-agent[78683]: DEBUG neutron.agent.linux.utils [None req-963b872c-7326-4d8c-bdb8-b148e6f0d6b9 None None] Unable to access /opt/stack/data/neutron/external/pids/3352a0f5-9b62-421d-8954-a13a7a430761.pid.haproxy; Error: [Errno 2] No such file or directory: \u0027/opt/stack/data/neutron/external/pids/3352a0f5-9b62-421d-8954-a13a7a430761.pid.haproxy\u0027 {{(pid\u003d78683) get_value_from_file /opt/stack/neutron/neutron/agent/linux/utils.py:252}}\n\nfrom:\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_8b3/858879/2/check/neutron-tempest-plugin-openvswitch/8b3620b/controller/logs/screen-q-dhcp.txt","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"d0f8753059fa9b822cac13936fc48e8330ba9325","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"26fe5133_e2dc9111","updated":"2023-04-18 03:13:31.000000000","message":"recheck failure in eutron.tests.functional.agent.ovn.extensions.test_qos_hwol.OVSInterfaceEventTestCase.test_port_creation_and_deletion unrelated to patch","commit_id":"0a1e70494faff343d0687647036f0c95217f4c23"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"1faf6954a77f9f460d607cecdf2bca9dccc4c701","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"55e13647_04f32662","updated":"2023-04-26 21:36:37.000000000","message":"Overall, I like the change, just some nits and questions. Thanks","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"79c973fff20a447175972f10a6dfc4d0143dfa35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"3fe07010_45a13f6d","updated":"2023-04-27 00:42:38.000000000","message":"@Miro,\n\nThanks for your review. I realized you left comments after pushing PS40. I\u0027ll address them tomorrow. Too late tonight","commit_id":"fb33fef827b964322b64ac872714d4fed672e407"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"9af4f03976c64235e93a2a6aa872f586b5129df8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"3000f9cb_41eb6118","updated":"2023-04-27 14:22:33.000000000","message":"recheck fullstack TIMED_OUT","commit_id":"fb33fef827b964322b64ac872714d4fed672e407"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6a81487e69a394ce7a359363a8ca5fb1bf157488","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"4ed3d52d_dba33610","updated":"2023-05-04 14:43:06.000000000","message":"Thanks for taking this up.","commit_id":"0cd807d4ce85659a83bc272d59c85fab26277464"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"920b9efc59ba3b624a9adbe2e939475a1fe25d97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"9a12f803_c4f70bfb","updated":"2023-05-15 18:00:47.000000000","message":"recheck per https://lists.openstack.org/pipermail/openstack-discuss/2023-May/033652.html, pep8 failure must be fixed now that https://review.opendev.org/c/openstack/neutron/+/883081 has merged","commit_id":"c92bb8be5e1775e9d0dbf7f57818105b65e56b1a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"6f3e85b8_f08ab321","updated":"2023-05-16 17:37:06.000000000","message":"Thanks for the comments!","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"99afd24a_81650269","updated":"2023-05-16 00:51:57.000000000","message":"Thanks for working on this Miguel.","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"4b769ac56ce786cb8d38131ec66d568c407f309e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"f7356a48_19fc2ec5","updated":"2023-05-16 14:37:06.000000000","message":"Thanks!","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"fae2f15c7e7838d08716fd2b4e6d050e598a9544","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"01171235_c2fb5b72","updated":"2023-05-15 20:43:39.000000000","message":"recheck neutron-ovs-grenade-multinode failure unrelated to patch","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"d37f610917c5a8392893e8bf9a2f2c05f21d16d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"e92878b1_3b38c376","updated":"2023-05-16 20:10:20.000000000","message":"Besides the comment I made earlier, this LGTM","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"fc3105f4a4345b3d385caa031f775c9eaf03044b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"3e158980_bbdd7bd4","updated":"2023-05-16 20:38:20.000000000","message":"recheck est_qos_policy_update_on_bound_port_from_null_policy test case failure not related to patch","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"c7d049ea_9944214a","updated":"2023-05-17 07:45:33.000000000","message":"some nits","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"aae10185ec89120b004b441f90cfd20889deb4ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"2748c45c_8e73dabb","updated":"2023-05-18 15:19:56.000000000","message":"Very nice to have this feature implemented.","commit_id":"5f4a41326d7b1da03e1929b4fd8bcdaf69da19ab"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"06fb182ea42fb87d3228966cc4bf6b44f11869d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"6f64e080_6ad01c1f","updated":"2023-05-18 20:47:06.000000000","message":"recheck failures not related to patch","commit_id":"5f4a41326d7b1da03e1929b4fd8bcdaf69da19ab"}],"doc/source/admin/config-metadata-rate-limiting.rst":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6a81487e69a394ce7a359363a8ca5fb1bf157488","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Metadata requests rate limiting is configured through the following parameters"},{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."}],"source_content_type":"text/x-rst","patch_set":41,"id":"6f00f0f2_2fcadea4","line":15,"updated":"2023-05-04 14:43:06.000000000","message":"For deployers it could be useful to know which neutron components use these config values.","commit_id":"0cd807d4ce85659a83bc272d59c85fab26277464"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"bb4219d3acdc397d2a5ce487f574fe89c76b9280","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Metadata requests rate limiting is configured through the following parameters"},{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."}],"source_content_type":"text/x-rst","patch_set":41,"id":"49de97c3_0726cb6b","line":15,"in_reply_to":"6f00f0f2_2fcadea4","updated":"2023-05-15 00:39:27.000000000","message":"Done","commit_id":"0cd807d4ce85659a83bc272d59c85fab26277464"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6a81487e69a394ce7a359363a8ca5fb1bf157488","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ipv6``: enables rate limiting for the metadata IPv6 address. This is a"},{"line_number":20,"context_line":"  boolean that is set to ``False`` by default, which means rate limiting will"},{"line_number":21,"context_line":"  be performed for the metadata IPv4 address."},{"line_number":22,"context_line":"* ``base_window_duration``: defines in seconds the duration of the base time"}],"source_content_type":"text/x-rst","patch_set":41,"id":"e30359eb_d3773edb","line":19,"updated":"2023-05-04 14:43:06.000000000","message":"We talked about this in the drivers meeting and I may not have explained an idea there properly.\n\nAs I understand today we can only support either ipv4 or ipv6 rate limiting because of a limitation (at most 3 stick tables) in the community edition of haproxy. Because this limitation seems arbitrary (probably to push people to the enterprise edition) it could easily change in the future. Because of that I would suggest to have a config format here that can allow in the future rate limiting for both ipv4 and ipv6. For example: ip_versions\u003d4,6. Today of course we would raise an error during startup prohibiting this combination. But if haproxy starts to let us use 4 stick tables we don\u0027t need to change the config format, instead only to start accepting the combined value.\n\nIndependently of this idea, it would be useful to add a few words about the haproxy limitation here, to let our users understand why they cannot allow rate limiting for both ip versions.","commit_id":"0cd807d4ce85659a83bc272d59c85fab26277464"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"bb4219d3acdc397d2a5ce487f574fe89c76b9280","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ipv6``: enables rate limiting for the metadata IPv6 address. This is a"},{"line_number":20,"context_line":"  boolean that is set to ``False`` by default, which means rate limiting will"},{"line_number":21,"context_line":"  be performed for the metadata IPv4 address."},{"line_number":22,"context_line":"* ``base_window_duration``: defines in seconds the duration of the base time"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7cbdc8c2_0200555a","line":19,"in_reply_to":"e30359eb_d3773edb","updated":"2023-05-15 00:39:27.000000000","message":"Done","commit_id":"0cd807d4ce85659a83bc272d59c85fab26277464"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Metadata requests rate limiting is configured through the following parameters"},{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."}],"source_content_type":"text/x-rst","patch_set":44,"id":"470af33d_6780df9e","line":15,"range":{"start_line":15,"start_character":2,"end_line":15,"end_character":27},"updated":"2023-05-16 00:51:57.000000000","message":"nit: maybe just neutron.conf ?","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Metadata requests rate limiting is configured through the following parameters"},{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."}],"source_content_type":"text/x-rst","patch_set":44,"id":"df82bf47_22472796","line":15,"range":{"start_line":15,"start_character":2,"end_line":15,"end_character":27},"in_reply_to":"470af33d_6780df9e","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ip_versions``: list of comma separated strings that specify the metadata"},{"line_number":20,"context_line":"  address versions (4 and/or 6) for which rate limiting must be enabled. The"}],"source_content_type":"text/x-rst","patch_set":44,"id":"bd6a29cc_e2359404","line":17,"range":{"start_line":17,"start_character":60,"end_line":17,"end_character":67},"updated":"2023-05-16 00:51:57.000000000","message":"s/requests","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":14,"context_line":"in the ``metadata_rate_limiting`` section of"},{"line_number":15,"context_line":"``/etc/neutron/neutron.conf``:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ip_versions``: list of comma separated strings that specify the metadata"},{"line_number":20,"context_line":"  address versions (4 and/or 6) for which rate limiting must be enabled. The"}],"source_content_type":"text/x-rst","patch_set":44,"id":"9a793360_80990f20","line":17,"range":{"start_line":17,"start_character":60,"end_line":17,"end_character":67},"in_reply_to":"bd6a29cc_e2359404","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ip_versions``: list of comma separated strings that specify the metadata"},{"line_number":20,"context_line":"  address versions (4 and/or 6) for which rate limiting must be enabled. The"},{"line_number":21,"context_line":"  default is to configure rate limiting only for the IPv4 address."},{"line_number":22,"context_line":"* ``base_window_duration``: defines in seconds the duration of the base time"}],"source_content_type":"text/x-rst","patch_set":44,"id":"b42728a3_f8132354","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":15},"updated":"2023-05-17 07:45:33.000000000","message":"If only one is accepted because of the HAProxy open source version limitation, why do we accept multiple values here?","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"aae10185ec89120b004b441f90cfd20889deb4ba","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ip_versions``: list of comma separated strings that specify the metadata"},{"line_number":20,"context_line":"  address versions (4 and/or 6) for which rate limiting must be enabled. The"},{"line_number":21,"context_line":"  default is to configure rate limiting only for the IPv4 address."},{"line_number":22,"context_line":"* ``base_window_duration``: defines in seconds the duration of the base time"}],"source_content_type":"text/x-rst","patch_set":44,"id":"144e0ff8_d8b13889","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":15},"in_reply_to":"5a8bd96d_2d7b2200","updated":"2023-05-18 15:19:56.000000000","message":"Yes, I saw the warning when parsing the configuration. Despite of the notes and documentation, I\u0027m sure we\u0027ll have future bug requests asking why it is not working when defining both versions.","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* ``rate_limit_enabled``: enables rate limiting of metadata requets. It is"},{"line_number":18,"context_line":"  a boolean that is set to ``False`` by default."},{"line_number":19,"context_line":"* ``ip_versions``: list of comma separated strings that specify the metadata"},{"line_number":20,"context_line":"  address versions (4 and/or 6) for which rate limiting must be enabled. The"},{"line_number":21,"context_line":"  default is to configure rate limiting only for the IPv4 address."},{"line_number":22,"context_line":"* ``base_window_duration``: defines in seconds the duration of the base time"}],"source_content_type":"text/x-rst","patch_set":44,"id":"5a8bd96d_2d7b2200","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":15},"in_reply_to":"b42728a3_f8132354","updated":"2023-05-18 00:04:40.000000000","message":"Originally, I named this configuration option \u0027ipv6\u0027 and it was a boolean. The idea was that the default was to rate limit for IPv4, unless this config option was set to true. However, in PS41, rubasov suggested that HAProxy might increase the number of sticky counters in the opensource version at some point in the future, allowing us to rate limit for both IPv4 and IPv6 at the same time. His suggestion was to leave the config side of this ready should that possibility actually ever happens, while profusely documenting that in the present only one option is supported at the same time. I thought it was a good idea, so I changed this option to a list and renamed it, adding the following documentation:\n\n1) Second note in https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_966/858879/45/check/openstack-tox-docs/966d076/docs/admin/config-metadata-rate-limiting.html\n\n2) A note in the description in the config option definition itself: https://review.opendev.org/c/openstack/neutron/+/858879/45/neutron/conf/agent/metadata/config.py#116\n\n3) Warning in the log file in case the user configures both: https://review.opendev.org/c/openstack/neutron/+/858879/45/neutron/common/metadata.py#78","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":50,"context_line":"   requests rate than the allowed during the base window, if there is a need to"},{"line_number":51,"context_line":"   do so."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the following ``/etc/neutron/neutron.conf`` snippet, the Networking service"},{"line_number":54,"context_line":"is configured to allow VMs to query the IPv4 metadata service address 6 times"},{"line_number":55,"context_line":"over a 60 seconds period, while allowing a higher rate of 2 queries during"},{"line_number":56,"context_line":"shorter periods of 10 seconds each:"}],"source_content_type":"text/x-rst","patch_set":44,"id":"d4492577_ec18811d","line":53,"range":{"start_line":53,"start_character":19,"end_line":53,"end_character":44},"updated":"2023-05-16 00:51:57.000000000","message":"same","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   requests rate than the allowed during the base window, if there is a need to"},{"line_number":51,"context_line":"   do so."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the following ``/etc/neutron/neutron.conf`` snippet, the Networking service"},{"line_number":54,"context_line":"is configured to allow VMs to query the IPv4 metadata service address 6 times"},{"line_number":55,"context_line":"over a 60 seconds period, while allowing a higher rate of 2 queries during"},{"line_number":56,"context_line":"shorter periods of 10 seconds each:"}],"source_content_type":"text/x-rst","patch_set":44,"id":"45182c95_ba19fd25","line":53,"range":{"start_line":53,"start_character":19,"end_line":53,"end_character":44},"in_reply_to":"d4492577_ec18811d","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"}],"neutron/agent/l3_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":36,"context_line":"    ha_conf.register_l3_agent_ha_opts(conf)"},{"line_number":37,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.SHARED_OPTS, conf)"},{"line_number":38,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.METADATA_RATE_LIMITING_OPTS,"},{"line_number":39,"context_line":"                                      conf,"},{"line_number":40,"context_line":"                                      group\u003dmeta_conf.RATE_LIMITING_GROUP)"},{"line_number":41,"context_line":"    config.register_interface_driver_opts_helper(conf)"},{"line_number":42,"context_line":"    config.register_agent_state_opts_helper(conf)"}],"source_content_type":"text/x-python","patch_set":44,"id":"88508df2_8e100e57","line":39,"range":{"start_line":39,"start_character":38,"end_line":39,"end_character":42},"updated":"2023-05-16 00:51:57.000000000","message":"should probably be cfg\u003dconf to be clear\n\nI only say this because I noticed this was different from the others and until I got to config.py and saw it was optional.","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    ha_conf.register_l3_agent_ha_opts(conf)"},{"line_number":37,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.SHARED_OPTS, conf)"},{"line_number":38,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.METADATA_RATE_LIMITING_OPTS,"},{"line_number":39,"context_line":"                                      conf,"},{"line_number":40,"context_line":"                                      group\u003dmeta_conf.RATE_LIMITING_GROUP)"},{"line_number":41,"context_line":"    config.register_interface_driver_opts_helper(conf)"},{"line_number":42,"context_line":"    config.register_agent_state_opts_helper(conf)"}],"source_content_type":"text/x-python","patch_set":44,"id":"e1806ac4_3b0a85fb","line":39,"range":{"start_line":39,"start_character":38,"end_line":39,"end_character":42},"in_reply_to":"88508df2_8e100e57","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"}],"neutron/agent/metadata/driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c0d1c19ff84db89abfe5b7c936cc456e42d44276","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":74,"context_line":"backend base_rate_limiter"},{"line_number":75,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"backend burst_rate_limiter"},{"line_number":78,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b184cf9f_d1f2a259","line":75,"range":{"start_line":75,"start_character":21,"end_line":75,"end_character":23},"updated":"2022-09-23 14:53:20.000000000","message":"we also server ipv6 metadata requests since [1]\n\n[1]https://review.opendev.org/c/openstack/neutron/+/715482","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"783fe5db78d2695e4f4ac8c4df18dcb83582700c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":74,"context_line":"backend base_rate_limiter"},{"line_number":75,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"backend burst_rate_limiter"},{"line_number":78,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":2,"id":"495a277b_e42aa778","line":75,"range":{"start_line":75,"start_character":21,"end_line":75,"end_character":23},"in_reply_to":"643b5b87_c5b9b31d","updated":"2023-04-17 23:26:33.000000000","message":"Done","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":74,"context_line":"backend base_rate_limiter"},{"line_number":75,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"backend burst_rate_limiter"},{"line_number":78,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":2,"id":"643b5b87_c5b9b31d","line":75,"range":{"start_line":75,"start_character":21,"end_line":75,"end_character":23},"in_reply_to":"b184cf9f_d1f2a259","updated":"2023-04-17 23:25:01.000000000","message":"I added support for ipv6","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c0d1c19ff84db89abfe5b7c936cc456e42d44276","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"}],"source_content_type":"text/x-python","patch_set":2,"id":"0a179c5d_37114fec","line":82,"updated":"2022-09-23 14:53:20.000000000","message":"ipv6 is missing here","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"}],"source_content_type":"text/x-python","patch_set":2,"id":"6de4fa7d_d51eeeb6","line":82,"in_reply_to":"0a179c5d_37114fec","updated":"2023-04-17 23:25:01.000000000","message":"Done","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c0d1c19ff84db89abfe5b7c936cc456e42d44276","unresolved":true,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"}],"source_content_type":"text/x-python","patch_set":2,"id":"f2f66b81_c605425b","line":83,"range":{"start_line":83,"start_character":43,"end_line":83,"end_character":60},"updated":"2022-09-23 14:53:20.000000000","message":"This parameter is, in any documentation I find, \"sc_http_req_rate\", not \"src_http_req_rate\"","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"783fe5db78d2695e4f4ac8c4df18dcb83582700c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"}],"source_content_type":"text/x-python","patch_set":2,"id":"17437df4_f0d1f739","line":83,"range":{"start_line":83,"start_character":43,"end_line":83,"end_character":60},"in_reply_to":"303f0f30_73d42096","updated":"2023-04-17 23:26:33.000000000","message":"Done","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":true,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"}],"source_content_type":"text/x-python","patch_set":2,"id":"303f0f30_73d42096","line":83,"range":{"start_line":83,"start_character":43,"end_line":83,"end_character":60},"in_reply_to":"f2f66b81_c605425b","updated":"2023-04-17 23:25:01.000000000","message":"Please look at https://www.haproxy.com/documentation/hapee/latest/onepage/#7.3.3-src_http_req_rate","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c0d1c19ff84db89abfe5b7c936cc456e42d44276","unresolved":true,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f5e7d4e3_262eaad8","line":84,"range":{"start_line":83,"start_character":4,"end_line":84,"end_character":112},"updated":"2022-09-23 14:53:20.000000000","message":"Sorry, I don\u0027t understand, what is the difference between those two lines? I know you want to limit the rate and the burst, but both will limit the rate, if I\u0027m not wrong.","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"783fe5db78d2695e4f4ac8c4df18dcb83582700c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfad1bac_b9ece01c","line":84,"range":{"start_line":83,"start_character":4,"end_line":84,"end_character":112},"in_reply_to":"9e090a25_5ff74b5f","updated":"2023-04-17 23:26:33.000000000","message":"Done","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":true,"context_lines":[{"line_number":80,"context_line":"listen listener"},{"line_number":81,"context_line":"    bind %(host)s:%(port)s"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(base_rate_limiter) gt %(base_query_rate_limit)s }"},{"line_number":84,"context_line":"    http-request deny deny_status 429 if { src_http_req_rate(burst_rate_limiter) gt %(burst_query_rate_limit)s }"},{"line_number":85,"context_line":"    http-request track-sc0 src table base_rate_limiter"},{"line_number":86,"context_line":"    http-request track-sc1 src table burst_rate_limited"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9e090a25_5ff74b5f","line":84,"range":{"start_line":83,"start_character":4,"end_line":84,"end_character":112},"in_reply_to":"f5e7d4e3_262eaad8","updated":"2023-04-17 23:25:01.000000000","message":"I agree with you. There is no difference. Please see comment below, line 58","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    stick-table type ipv6 size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"backend burst_rate_limiter"},{"line_number":59,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"listen listener"},{"line_number":62,"context_line":"    bind %(host)s:%(port)s"}],"source_content_type":"text/x-python","patch_set":29,"id":"c952158a_71a9e7b4","line":59,"updated":"2023-04-17 23:25:01.000000000","message":"I haven\u0027t found in the HAProxy documentation a way to measure the burst rate. Maybe we just implement the base rate and don\u0027t implement burst limitation","commit_id":"1cf5b9f4553e2419c1b20a8bdda8260a02e5eab0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f96b831831f8e8ee1b20950690659c30b3483e60","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    stick-table type ipv6 size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"backend burst_rate_limiter"},{"line_number":59,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"listen listener"},{"line_number":62,"context_line":"    bind %(host)s:%(port)s"}],"source_content_type":"text/x-python","patch_set":29,"id":"61b1fcae_d06f4a19","line":59,"in_reply_to":"c952158a_71a9e7b4","updated":"2023-04-21 22:32:25.000000000","message":"Done","commit_id":"1cf5b9f4553e2419c1b20a8bdda8260a02e5eab0"}],"neutron/agent/ovn/metadata/driver.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7139eca07efac96ba5e60bedd3b1afef39721fab","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"_RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":61,"context_line":"backend base_rate_limiter"},{"line_number":62,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"backend burst_rate_limiter"},{"line_number":65,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":2,"id":"4ae7253a_a28ee0ca","line":62,"range":{"start_line":62,"start_character":21,"end_line":62,"end_character":23},"updated":"2022-09-30 07:36:48.000000000","message":"Please consider here also the comments from Rodolfo regarding ipv6","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f087599ed383813da11faf05945c2a45fee7f51f","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"_RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":61,"context_line":"backend base_rate_limiter"},{"line_number":62,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"backend burst_rate_limiter"},{"line_number":65,"context_line":"    stick-table type ip size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3abab817_0e0126cd","line":62,"range":{"start_line":62,"start_character":21,"end_line":62,"end_character":23},"in_reply_to":"4ae7253a_a28ee0ca","updated":"2023-04-17 23:25:01.000000000","message":"Done","commit_id":"d748c3f051c902287d7b838aaf4a5800c0d30894"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":109,"context_line":"            cfg_info[\u0027res_type\u0027] \u003d \u0027Router\u0027"},{"line_number":110,"context_line":"            cfg_info[\u0027res_id\u0027] \u003d self.router_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        ip_version \u003d comm_meta.parse_ip_versions("},{"line_number":113,"context_line":"            self.rate_limiting_config.ip_versions)"},{"line_number":114,"context_line":"        if self.rate_limiting_config.rate_limit_enabled and ip_version:"},{"line_number":115,"context_line":"            cfg_info[\u0027ip_version\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":45,"id":"6f85205d_1e34bcd7","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":49},"updated":"2023-05-17 07:45:33.000000000","message":"The following section is duplicated in agent/metadata/driver.py. A TODO to refactor this section to avoid code duplication is needed.","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            cfg_info[\u0027res_type\u0027] \u003d \u0027Router\u0027"},{"line_number":110,"context_line":"            cfg_info[\u0027res_id\u0027] \u003d self.router_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        ip_version \u003d comm_meta.parse_ip_versions("},{"line_number":113,"context_line":"            self.rate_limiting_config.ip_versions)"},{"line_number":114,"context_line":"        if self.rate_limiting_config.rate_limit_enabled and ip_version:"},{"line_number":115,"context_line":"            cfg_info[\u0027ip_version\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":45,"id":"ab873fbd_05950259","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":49},"in_reply_to":"6f85205d_1e34bcd7","updated":"2023-05-18 00:04:40.000000000","message":"I did something better. I refactored it","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"}],"neutron/common/metadata.py":[{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"1faf6954a77f9f460d607cecdf2bca9dccc4c701","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":49,"context_line":"backend base_rate_limiter"},{"line_number":50,"context_line":"    stick-table type %(ip_version)s size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"backend burst_rate_limiter"},{"line_number":53,"context_line":"    stick-table type %(ip_version)s size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":39,"id":"f216e5c5_f2844a30","line":50,"range":{"start_line":50,"start_character":41,"end_line":50,"end_character":44},"updated":"2023-04-26 21:36:37.000000000","message":"Just curious how you picked 10k size? Any emperical data or just a guess?","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0d6db781d03db1d93cb2f5d00954903b074364bb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"RATE_LIMITED_CONFIG_TEMPLATE \u003d \"\"\""},{"line_number":49,"context_line":"backend base_rate_limiter"},{"line_number":50,"context_line":"    stick-table type %(ip_version)s size 10k expire %(stick_table_expire)ss store http_req_rate(%(base_window_duration)ss)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"backend burst_rate_limiter"},{"line_number":53,"context_line":"    stick-table type %(ip_version)s size 10k expire %(stick_table_expire)ss store http_req_rate(%(burst_window_duration)ss)"}],"source_content_type":"text/x-python","patch_set":39,"id":"cd003219_6e04dfe8","line":50,"range":{"start_line":50,"start_character":41,"end_line":50,"end_character":44},"in_reply_to":"f216e5c5_f2844a30","updated":"2023-04-27 22:50:06.000000000","message":"It was just a guess based on what I read here: https://www.haproxy.com/blog/four-examples-of-haproxy-rate-limiting/#sliding-window-rate-limiting","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def parse_ip_versions(ip_versions):"},{"line_number":73,"context_line":"    if not set(ip_versions).issubset({\u00274\u0027, \u00276\u0027}):"},{"line_number":74,"context_line":"        LOG.warning(\u0027Invalid metadata address ip versions: %s. Metadata rate \u0027"},{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"},{"line_number":77,"context_line":"    if len(ip_versions) !\u003d 1:"}],"source_content_type":"text/x-python","patch_set":44,"id":"b540deff_b019fd6c","line":74,"range":{"start_line":74,"start_character":46,"end_line":74,"end_character":48},"updated":"2023-05-16 00:51:57.000000000","message":"nit: IP","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def parse_ip_versions(ip_versions):"},{"line_number":73,"context_line":"    if not set(ip_versions).issubset({\u00274\u0027, \u00276\u0027}):"},{"line_number":74,"context_line":"        LOG.warning(\u0027Invalid metadata address ip versions: %s. Metadata rate \u0027"},{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"},{"line_number":77,"context_line":"    if len(ip_versions) !\u003d 1:"}],"source_content_type":"text/x-python","patch_set":44,"id":"cc47e3f5_886240a1","line":74,"range":{"start_line":74,"start_character":46,"end_line":74,"end_character":48},"in_reply_to":"b540deff_b019fd6c","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"},{"line_number":77,"context_line":"    if len(ip_versions) !\u003d 1:"},{"line_number":78,"context_line":"        LOG.warning(\u0027Invalid metadata address ip versions: %s. Metadata rate \u0027"},{"line_number":79,"context_line":"                    \u0027limiting cannot be enabled for IPv4 and IPv6 at the same \u0027"},{"line_number":80,"context_line":"                    \u0027time. Metadata rate limiting will not be enabled.\u0027,"},{"line_number":81,"context_line":"                    ip_versions)"}],"source_content_type":"text/x-python","patch_set":44,"id":"db436c9c_7946b91c","line":78,"range":{"start_line":78,"start_character":46,"end_line":78,"end_character":48},"updated":"2023-05-16 00:51:57.000000000","message":"same","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"},{"line_number":77,"context_line":"    if len(ip_versions) !\u003d 1:"},{"line_number":78,"context_line":"        LOG.warning(\u0027Invalid metadata address ip versions: %s. Metadata rate \u0027"},{"line_number":79,"context_line":"                    \u0027limiting cannot be enabled for IPv4 and IPv6 at the same \u0027"},{"line_number":80,"context_line":"                    \u0027time. Metadata rate limiting will not be enabled.\u0027,"},{"line_number":81,"context_line":"                    ip_versions)"}],"source_content_type":"text/x-python","patch_set":44,"id":"2832b494_1c5ef0d8","line":78,"range":{"start_line":78,"start_character":46,"end_line":78,"end_character":48},"in_reply_to":"db436c9c_7946b91c","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def parse_ip_versions(ip_versions):"},{"line_number":73,"context_line":"    if not set(ip_versions).issubset({\u00274\u0027, \u00276\u0027}):"},{"line_number":74,"context_line":"        LOG.warning(\u0027Invalid metadata address IP versions: %s. Metadata rate \u0027"},{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":45,"id":"8fbcce17_6b8ce6e7","line":73,"range":{"start_line":73,"start_character":38,"end_line":73,"end_character":46},"updated":"2023-05-17 07:45:33.000000000","message":"micro nit: we can use the n-lib constants (int) and convert to strings.","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def parse_ip_versions(ip_versions):"},{"line_number":73,"context_line":"    if not set(ip_versions).issubset({\u00274\u0027, \u00276\u0027}):"},{"line_number":74,"context_line":"        LOG.warning(\u0027Invalid metadata address IP versions: %s. Metadata rate \u0027"},{"line_number":75,"context_line":"                    \u0027limiting will not be enabled.\u0027, ip_versions)"},{"line_number":76,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":45,"id":"220acef7_2772f87b","line":73,"range":{"start_line":73,"start_character":38,"end_line":73,"end_character":46},"in_reply_to":"8fbcce17_6b8ce6e7","updated":"2023-05-18 00:04:40.000000000","message":"Done","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"}],"neutron/conf/agent/dhcp.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":121,"context_line":"    cfg.register_opts(DHCP_OPTS)"},{"line_number":122,"context_line":"    cfg.register_opts(DNSMASQ_OPTS)"},{"line_number":123,"context_line":"    cfg.register_opts(common.DHCP_PROTOCOL_OPTS)"},{"line_number":124,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.METADATA_RATE_LIMITING_OPTS,"},{"line_number":125,"context_line":"                                      cfg, meta_conf.RATE_LIMITING_GROUP)"}],"source_content_type":"text/x-python","patch_set":45,"id":"55c93e09_4e30c5c5","line":125,"range":{"start_line":124,"start_character":4,"end_line":125,"end_character":73},"updated":"2023-05-17 07:45:33.000000000","message":"We have 3 calls to this method and all of them are different: using positional arguments (this one), passing the cfg as kwarg [1] and not passing cfg [2].\n\nI would recommend that these 3 calls pass the cfg object and use kwargs, same as in [1].\n\n[1]https://review.opendev.org/c/openstack/neutron/+/858879/45/neutron/agent/l3_agent.py\n[2]https://review.opendev.org/c/openstack/neutron/+/858879/45/neutron/agent/metadata_agent.py","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    cfg.register_opts(DHCP_OPTS)"},{"line_number":122,"context_line":"    cfg.register_opts(DNSMASQ_OPTS)"},{"line_number":123,"context_line":"    cfg.register_opts(common.DHCP_PROTOCOL_OPTS)"},{"line_number":124,"context_line":"    meta_conf.register_meta_conf_opts(meta_conf.METADATA_RATE_LIMITING_OPTS,"},{"line_number":125,"context_line":"                                      cfg, meta_conf.RATE_LIMITING_GROUP)"}],"source_content_type":"text/x-python","patch_set":45,"id":"450c673c_d710199b","line":125,"range":{"start_line":124,"start_character":4,"end_line":125,"end_character":73},"in_reply_to":"55c93e09_4e30c5c5","updated":"2023-05-18 00:04:40.000000000","message":"Done","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"}],"neutron/conf/agent/metadata/config.py":[{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"1faf6954a77f9f460d607cecdf2bca9dccc4c701","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                       \u0027The default is to rate limit for the metadata IPv4 \u0027"},{"line_number":115,"context_line":"                       \u0027address.\u0027)),"},{"line_number":116,"context_line":"    cfg.IntOpt(\u0027base_window_duration\u0027,"},{"line_number":117,"context_line":"               default\u003d10,"},{"line_number":118,"context_line":"               help\u003d_(\"Duration (seconds) of the base window on the \""},{"line_number":119,"context_line":"                      \"metadata API.\")),"},{"line_number":120,"context_line":"    cfg.IntOpt(\u0027base_query_rate_limit\u0027,"},{"line_number":121,"context_line":"               default\u003d10,"},{"line_number":122,"context_line":"               help\u003d_(\"Max number of queries to accept during the base \""},{"line_number":123,"context_line":"                      \"window.\")),"},{"line_number":124,"context_line":"    cfg.IntOpt(\u0027burst_window_duration\u0027,"},{"line_number":125,"context_line":"               default\u003d10,"},{"line_number":126,"context_line":"               help\u003d_(\"Duration (seconds) of the burst window on the \""},{"line_number":127,"context_line":"                      \"metadata API.\")),"},{"line_number":128,"context_line":"    cfg.IntOpt(\u0027burst_query_rate_limit\u0027,"},{"line_number":129,"context_line":"               default\u003d10,"},{"line_number":130,"context_line":"               help\u003d_(\"Max number of queries to accept during the burst \""},{"line_number":131,"context_line":"                      \"window.\")),"},{"line_number":132,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":39,"id":"80076393_39d06c59","line":129,"range":{"start_line":117,"start_character":0,"end_line":129,"end_character":26},"updated":"2023-04-26 21:36:37.000000000","message":"Do you want to have same default(10) between base and burst  windows?","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0d6db781d03db1d93cb2f5d00954903b074364bb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                       \u0027The default is to rate limit for the metadata IPv4 \u0027"},{"line_number":115,"context_line":"                       \u0027address.\u0027)),"},{"line_number":116,"context_line":"    cfg.IntOpt(\u0027base_window_duration\u0027,"},{"line_number":117,"context_line":"               default\u003d10,"},{"line_number":118,"context_line":"               help\u003d_(\"Duration (seconds) of the base window on the \""},{"line_number":119,"context_line":"                      \"metadata API.\")),"},{"line_number":120,"context_line":"    cfg.IntOpt(\u0027base_query_rate_limit\u0027,"},{"line_number":121,"context_line":"               default\u003d10,"},{"line_number":122,"context_line":"               help\u003d_(\"Max number of queries to accept during the base \""},{"line_number":123,"context_line":"                      \"window.\")),"},{"line_number":124,"context_line":"    cfg.IntOpt(\u0027burst_window_duration\u0027,"},{"line_number":125,"context_line":"               default\u003d10,"},{"line_number":126,"context_line":"               help\u003d_(\"Duration (seconds) of the burst window on the \""},{"line_number":127,"context_line":"                      \"metadata API.\")),"},{"line_number":128,"context_line":"    cfg.IntOpt(\u0027burst_query_rate_limit\u0027,"},{"line_number":129,"context_line":"               default\u003d10,"},{"line_number":130,"context_line":"               help\u003d_(\"Max number of queries to accept during the burst \""},{"line_number":131,"context_line":"                      \"window.\")),"},{"line_number":132,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":39,"id":"e17bedb6_401a8b12","line":129,"range":{"start_line":117,"start_character":0,"end_line":129,"end_character":26},"in_reply_to":"80076393_39d06c59","updated":"2023-04-27 22:50:06.000000000","message":"Yes, I think that in many cases, really no burst rate limiting will be necessary and in that situation base and burst will be the same","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9fcaca728cc7135afa9cf26a7d49c55bcc7e73a","unresolved":true,"context_lines":[{"line_number":110,"context_line":"                help\u003d_(\u0027Enable rate limiting on the metadata API.\u0027)),"},{"line_number":111,"context_line":"    cfg.ListOpt(\u0027ip_versions\u0027,"},{"line_number":112,"context_line":"                default\u003d[\u00274\u0027],"},{"line_number":113,"context_line":"                help\u003d_(\u0027Comma separated list of the metadata address ip \u0027"},{"line_number":114,"context_line":"                       \u0027versions (4, 6) for which rate limiting will be \u0027"},{"line_number":115,"context_line":"                       \u0027enabled. The default is to rate limit only for the \u0027"},{"line_number":116,"context_line":"                       \u0027metadata IPv4 address. NOTE: at the moment, the open \u0027"}],"source_content_type":"text/x-python","patch_set":44,"id":"a64a581c_dcbc2ca0","line":113,"range":{"start_line":113,"start_character":69,"end_line":113,"end_character":71},"updated":"2023-05-16 00:51:57.000000000","message":"nit: IP","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4da90a70425745032cfb64599ced9bf03e7b3388","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                help\u003d_(\u0027Enable rate limiting on the metadata API.\u0027)),"},{"line_number":111,"context_line":"    cfg.ListOpt(\u0027ip_versions\u0027,"},{"line_number":112,"context_line":"                default\u003d[\u00274\u0027],"},{"line_number":113,"context_line":"                help\u003d_(\u0027Comma separated list of the metadata address ip \u0027"},{"line_number":114,"context_line":"                       \u0027versions (4, 6) for which rate limiting will be \u0027"},{"line_number":115,"context_line":"                       \u0027enabled. The default is to rate limit only for the \u0027"},{"line_number":116,"context_line":"                       \u0027metadata IPv4 address. NOTE: at the moment, the open \u0027"}],"source_content_type":"text/x-python","patch_set":44,"id":"2a814861_87fd34da","line":113,"range":{"start_line":113,"start_character":69,"end_line":113,"end_character":71},"in_reply_to":"a64a581c_dcbc2ca0","updated":"2023-05-16 17:37:06.000000000","message":"Done","commit_id":"31f45ed5599db23e1767710bee1239ac238e5b46"}],"neutron/tests/contrib/testing.filters":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":10,"context_line":"ping_kill: KillFilter, root, ping, -2"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"# enable curl from namespace"},{"line_number":13,"context_line":"curl_filter: RegExpFilter, /usr/bin/curl, root, curl, --max-time, \\d+, -D-, http://[0-9a-z:./-\\[\\]\\%]+"},{"line_number":14,"context_line":"ncat_filter: CommandFilter, ncat, root"},{"line_number":15,"context_line":"ncat_kill: KillFilter, root, ncat, -9"},{"line_number":16,"context_line":"ss_filter: CommandFilter, ss, root"}],"source_content_type":"application/octet-stream","patch_set":45,"id":"90364178_611d309a","line":13,"range":{"start_line":13,"start_character":93,"end_line":13,"end_character":100},"updated":"2023-05-17 07:45:33.000000000","message":"If I\u0027m not wrong, this is for IPv6, right?","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ping_kill: KillFilter, root, ping, -2"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"# enable curl from namespace"},{"line_number":13,"context_line":"curl_filter: RegExpFilter, /usr/bin/curl, root, curl, --max-time, \\d+, -D-, http://[0-9a-z:./-\\[\\]\\%]+"},{"line_number":14,"context_line":"ncat_filter: CommandFilter, ncat, root"},{"line_number":15,"context_line":"ncat_kill: KillFilter, root, ncat, -9"},{"line_number":16,"context_line":"ss_filter: CommandFilter, ss, root"}],"source_content_type":"application/octet-stream","patch_set":45,"id":"084a168b_5d25dedd","line":13,"range":{"start_line":13,"start_character":93,"end_line":13,"end_character":100},"in_reply_to":"90364178_611d309a","updated":"2023-05-18 00:04:40.000000000","message":"Correct","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"}],"neutron/tests/functional/agent/l3/test_metadata_proxy.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"db079e155e394702a9823c34b247773b3eb6ba59","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                    time.sleep(METADATA_REQUEST_SLEEP)"},{"line_number":94,"context_line":"                    i +\u003d METADATA_REQUEST_SLEEP"},{"line_number":95,"context_line":"                else:"},{"line_number":96,"context_line":"                    self.fail(\u0027metadata proxy unreachable \u0027"},{"line_number":97,"context_line":"                              \u0027on %s before timeout\u0027 % cmd[-1])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if i \u003e CONNECTION_REFUSED_TIMEOUT:"}],"source_content_type":"text/x-python","patch_set":26,"id":"831f4d1d_5f6d1ca6","line":96,"updated":"2023-04-13 23:38:53.000000000","message":"The ipv6 test case (test_access_to_metadata_proxy_ipv6) is failing. If I insert a:\n\ntime.sleep(300)\n\nright before this line, I can compare the test case failure with what I can do in exactly the same \"machine\" namespace. I describe the situation here: https://paste.openstack.org/show/bV0SgaK0lzuxkAixlWGG/.\n\nThe following facts:\n\n1) I can successfully manually execute the exact same curl command with ipv6 in the exact same namespace\n\n2) The ipv4 test case executes successfully\n\n3) The error messages I get in the log file pointing to rootwrap\n\nlead me to believe that one of the rootwrap filters is rejecting the curl command, possibly because of the [ and ] characters that curl requires when connecting to an ipv6 address.\n\nAny suggestions on how to get around this issue?","commit_id":"51c8955f36f30451a7da5cb9909c3d98e7cec302"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e6d0247b6c3818698493e29d7d0082e5de53c3c6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                    time.sleep(METADATA_REQUEST_SLEEP)"},{"line_number":94,"context_line":"                    i +\u003d METADATA_REQUEST_SLEEP"},{"line_number":95,"context_line":"                else:"},{"line_number":96,"context_line":"                    self.fail(\u0027metadata proxy unreachable \u0027"},{"line_number":97,"context_line":"                              \u0027on %s before timeout\u0027 % cmd[-1])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if i \u003e CONNECTION_REFUSED_TIMEOUT:"}],"source_content_type":"text/x-python","patch_set":26,"id":"bb23b652_05bb8df5","line":96,"in_reply_to":"63219194_997f6f6b","updated":"2023-04-15 00:38:59.000000000","message":"Done","commit_id":"51c8955f36f30451a7da5cb9909c3d98e7cec302"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"ee1dacc9b6f89ff270e561163ce48415cd9ab780","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                    time.sleep(METADATA_REQUEST_SLEEP)"},{"line_number":94,"context_line":"                    i +\u003d METADATA_REQUEST_SLEEP"},{"line_number":95,"context_line":"                else:"},{"line_number":96,"context_line":"                    self.fail(\u0027metadata proxy unreachable \u0027"},{"line_number":97,"context_line":"                              \u0027on %s before timeout\u0027 % cmd[-1])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if i \u003e CONNECTION_REFUSED_TIMEOUT:"}],"source_content_type":"text/x-python","patch_set":26,"id":"63219194_997f6f6b","line":96,"in_reply_to":"831f4d1d_5f6d1ca6","updated":"2023-04-14 02:12:29.000000000","message":"ok,\n\nIn my local functional test environment I found /opt/stack/neutron/.tox/dsvm-functional/etc/neutron/rootwrap.d/testing.filters with:\n\ncurl_filter: RegExpFilter, /usr/bin/curl, root, curl, --max-time, \\d+, -D-, http://[0-9a-z:./-]+\n\nNo wonder the curl command is failing!","commit_id":"51c8955f36f30451a7da5cb9909c3d98e7cec302"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"1faf6954a77f9f460d607cecdf2bca9dccc4c701","unresolved":true,"context_lines":[{"line_number":169,"context_line":"            self.assertIn(str(webob.exc.HTTPOk.code), firstline.split())"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if exceed:"},{"line_number":172,"context_line":"            # The next request should fail with a \"Too Many Requests\" response"},{"line_number":173,"context_line":"            firstline \u003d self._query_metadata_proxy(machine, ipv6\u003dipv6,"},{"line_number":174,"context_line":"                                                   interface\u003dinterface)"},{"line_number":175,"context_line":"            self.assertIn(\u0027429\u0027, firstline.split())"}],"source_content_type":"text/x-python","patch_set":39,"id":"cf4f15f3_acce6243","line":172,"range":{"start_line":172,"start_character":12,"end_line":172,"end_character":78},"updated":"2023-04-26 21:36:37.000000000","message":"nit: This comment can be converted into a self documenting code. I.e. \ntoo_many_requests_code \u003d \u0027429\u0027","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0d6db781d03db1d93cb2f5d00954903b074364bb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            self.assertIn(str(webob.exc.HTTPOk.code), firstline.split())"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if exceed:"},{"line_number":172,"context_line":"            # The next request should fail with a \"Too Many Requests\" response"},{"line_number":173,"context_line":"            firstline \u003d self._query_metadata_proxy(machine, ipv6\u003dipv6,"},{"line_number":174,"context_line":"                                                   interface\u003dinterface)"},{"line_number":175,"context_line":"            self.assertIn(\u0027429\u0027, firstline.split())"}],"source_content_type":"text/x-python","patch_set":39,"id":"ed6320aa_ccf95bf2","line":172,"range":{"start_line":172,"start_character":12,"end_line":172,"end_character":78},"in_reply_to":"cf4f15f3_acce6243","updated":"2023-04-27 22:50:06.000000000","message":"Done","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"1faf6954a77f9f460d607cecdf2bca9dccc4c701","unresolved":true,"context_lines":[{"line_number":203,"context_line":"                               \u0027metadata_rate_limiting\u0027)"},{"line_number":204,"context_line":"        machine, _ \u003d self._set_up_for_rate_limiting_test()"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        # Since the number of metadata requests don\u0027t exceed the base or the"},{"line_number":207,"context_line":"        # burst query rate limit, all of them should get \"OK\" response"},{"line_number":208,"context_line":"        self._test_rate_limiting(2, machine, exceed\u003dFalse)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        # Wait for haproxy to reset the burst window and then test it returns"}],"source_content_type":"text/x-python","patch_set":39,"id":"0ac1a357_dd1028d7","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":70},"updated":"2023-04-26 21:36:37.000000000","message":"nit(consider): This comment can be converted into self documenting code by changing the test title. e.i. test_metadata_proxy_burst_rate_limiting_succeeds_when_rate_limit_is_less\n\nConsider similar change for other tests.","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0d6db781d03db1d93cb2f5d00954903b074364bb","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                               \u0027metadata_rate_limiting\u0027)"},{"line_number":204,"context_line":"        machine, _ \u003d self._set_up_for_rate_limiting_test()"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        # Since the number of metadata requests don\u0027t exceed the base or the"},{"line_number":207,"context_line":"        # burst query rate limit, all of them should get \"OK\" response"},{"line_number":208,"context_line":"        self._test_rate_limiting(2, machine, exceed\u003dFalse)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        # Wait for haproxy to reset the burst window and then test it returns"}],"source_content_type":"text/x-python","patch_set":39,"id":"cff82d5e_571f4003","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":70},"in_reply_to":"0ac1a357_dd1028d7","updated":"2023-04-27 22:50:06.000000000","message":"This test case is an overall testing of burst rate limiting. Yes, in line 208 it tests that \"burst_rate_limiting_succeeds_when_rate_limit_is_less\", but then it goes on to test in line 213 to test that the base rate limit is exceeded, even though the burst rate limit wasn\u0027t exceeded. Besides, I don\u0027t think there is anything wrong with also documenting with comments","commit_id":"6014fa065a9f1bdedb38fa69f5f07800367f5110"}],"neutron/tests/unit/agent/metadata/test_driver.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7139eca07efac96ba5e60bedd3b1afef39721fab","unresolved":true,"context_lines":[{"line_number":142,"context_line":"        router_id \u003d _uuid()"},{"line_number":143,"context_line":"        router_ns \u003d \u0027qrouter-%s\u0027 % router_id"},{"line_number":144,"context_line":"        ip_class_path \u003d \u0027neutron.agent.linux.ip_lib.IPWrapper\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_user\u0027, self.EUNAME)"},{"line_number":147,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_group\u0027, self.EGNAME)"},{"line_number":148,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_socket\u0027, self.METADATA_SOCKET)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ccf1f29_825143c9","side":"PARENT","line":145,"updated":"2022-09-30 07:36:48.000000000","message":"nit: useless line deletion","commit_id":"cd2c5be839e60931d45c3ff681a4064e5ade5b94"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"86d70fd48453d67c401800fe01c2d413c89ed4d6","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        router_id \u003d _uuid()"},{"line_number":143,"context_line":"        router_ns \u003d \u0027qrouter-%s\u0027 % router_id"},{"line_number":144,"context_line":"        ip_class_path \u003d \u0027neutron.agent.linux.ip_lib.IPWrapper\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_user\u0027, self.EUNAME)"},{"line_number":147,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_group\u0027, self.EGNAME)"},{"line_number":148,"context_line":"        cfg.CONF.set_override(\u0027metadata_proxy_socket\u0027, self.METADATA_SOCKET)"}],"source_content_type":"text/x-python","patch_set":2,"id":"45e5c91b_9a95f816","side":"PARENT","line":145,"in_reply_to":"7ccf1f29_825143c9","updated":"2023-04-17 23:29:48.000000000","message":"Done","commit_id":"cd2c5be839e60931d45c3ff681a4064e5ade5b94"}],"releasenotes/notes/add-metadata-rate-limiting-bf0c17a31f86ee16.yaml":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"96850f33f7b671d7dbcdbfc04b9afefbb646ad11","unresolved":true,"context_lines":[{"line_number":3,"context_line":"    - Neutron allows cloud administrators to limit the rate at which VMs query"},{"line_number":4,"context_line":"      the Nova metadata service in order to protect the OpenStack deployment"},{"line_number":5,"context_line":"      from DoS or misbehaved instances. This new feature can be configured in"},{"line_number":6,"context_line":"      neutron.conf. Please see the \"Metadata service query rate limiting\""},{"line_number":7,"context_line":"      section under Neutron configuration in the documentation for more"},{"line_number":8,"context_line":"      details."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"1e8a3f92_31b516d7","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":18},"updated":"2023-05-17 07:45:33.000000000","message":"``neutron.conf`` file","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e0fedebf5dcab1c1fb659f9df095c560dbd1a49f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    - Neutron allows cloud administrators to limit the rate at which VMs query"},{"line_number":4,"context_line":"      the Nova metadata service in order to protect the OpenStack deployment"},{"line_number":5,"context_line":"      from DoS or misbehaved instances. This new feature can be configured in"},{"line_number":6,"context_line":"      neutron.conf. Please see the \"Metadata service query rate limiting\""},{"line_number":7,"context_line":"      section under Neutron configuration in the documentation for more"},{"line_number":8,"context_line":"      details."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"3246f6da_d552449a","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":18},"in_reply_to":"1e8a3f92_31b516d7","updated":"2023-05-18 00:04:40.000000000","message":"Done","commit_id":"12d4591fb6075a160a652909b73cc0214c296377"}]}
