)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b8cb0c92ced772a067b2ec45665378402538e35f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fc60492f_429be3fe","updated":"2022-07-18 14:03:33.000000000","message":"Thanks","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"37f4d82dbb4b7d569d8fa811d34df44705566806","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff580681_b6197c6e","updated":"2022-07-19 06:58:17.000000000","message":"FYI I reported a bug in pyroute2 (https://github.com/svinota/pyroute2/issues/964)\nif \"table\" is set, pyroute2 incorrectly sets the \"action\" to something that is invalid. So it adds a rule to the kernel, but the rule is not correct.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d91e5c0764783294a57fe0472f4a095e85ae626c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e0a6c538_9973314d","updated":"2022-07-22 06:24:37.000000000","message":"Putting -1 but I\u0027m not strong at all with it.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8e5723d48641436cac7b4dd6d7072ebf5c59e0e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"20017c21_e4023000","updated":"2022-07-21 08:38:26.000000000","message":"recheck\npyroute2 0.7.2 is out (https://pypi.org/project/pyroute2/0.7.2/ )","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5d673a05bb6ea573d4e612180c161c6c0b539762","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"03604c0e_800b01c0","in_reply_to":"f92b3ea6_be008b09","updated":"2022-07-19 09:00:31.000000000","message":"I\u0027ve manually tested your pyroute2 patch and it\u0027s working.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"472944c255823e19f417ffb53cbd35f6de8e9353","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f92b3ea6_be008b09","in_reply_to":"ff580681_b6197c6e","updated":"2022-07-19 08:58:56.000000000","message":"Good catch! This is why is failing test_rules_lifecycle\n\nWe have reverted the bump of pyroute2 0.7.1 and we\u0027ll wait for 0.7.2.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7371ab7fd17d948c5a13c5b8cdb63a5663679874","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c7486958_0a3fc296","updated":"2022-07-22 16:07:40.000000000","message":"recheck","commit_id":"7f37b928633f93dcff056085333b5b0aa39f1ca8"},{"author":{"_account_id":34118,"name":"Arnau Verdaguer","email":"averdagu@redhat.com","username":"averdaguer"},"change_message_id":"9f5df45f5088c1ecfe3478aebe906be1174950f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7f845cda_fff7c6e4","updated":"2022-07-26 14:05:41.000000000","message":"lgtm","commit_id":"45d77515fc716581abd96b8f6e6a6bf644e9d4f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"922c75b3d16f05ede824c884ee0abe77da721dbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8c14560b_0ae732f5","updated":"2022-07-26 14:52:50.000000000","message":"recheck\n\nerror not related","commit_id":"45d77515fc716581abd96b8f6e6a6bf644e9d4f3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f4446e93e61db350279200cbe40677c6d60a2d0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1ce47aaf_e2f912c9","updated":"2022-08-02 09:38:38.000000000","message":"Thanks!","commit_id":"47a0278812499add333497efe15b7fb176203f74"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"02508d060ad82cf43a089a1068ed00866e030edb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"35287ed8_699dba49","updated":"2022-07-29 16:46:38.000000000","message":"lgtm","commit_id":"47a0278812499add333497efe15b7fb176203f74"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f58320206cefa37c3fe9371d349a509f17b5fbd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6828a5b3_4c37ec3d","updated":"2022-07-29 09:37:37.000000000","message":"recheck\n\nerror in zuul","commit_id":"47a0278812499add333497efe15b7fb176203f74"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b8cb0c92ced772a067b2ec45665378402538e35f","unresolved":true,"context_lines":[{"line_number":1302,"context_line":"    return True"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"def add_ip_rule(namespace, ip, iif\u003dNone, table\u003d253, priority\u003dNone, to\u003dNone):"},{"line_number":1306,"context_line":"    \"\"\"Create an IP rule in a namespace"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    :param namespace: (string) namespace name"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab87a75_f5289d25","line":1305,"range":{"start_line":1305,"start_character":47,"end_line":1305,"end_character":50},"updated":"2022-07-18 14:03:33.000000000","message":"Interesting/good to know fact: in pyroute2 default table is 254:\nhttps://github.com/svinota/pyroute2/blob/master/pyroute2/iproute/linux.py#L100","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7371ab7fd17d948c5a13c5b8cdb63a5663679874","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"    return True"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"def add_ip_rule(namespace, ip, iif\u003dNone, table\u003d253, priority\u003dNone, to\u003dNone):"},{"line_number":1306,"context_line":"    \"\"\"Create an IP rule in a namespace"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    :param namespace: (string) namespace name"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a10dba9_a692eaa0","line":1305,"range":{"start_line":1305,"start_character":47,"end_line":1305,"end_character":50},"in_reply_to":"3ca1ef01_e13f6c2a","updated":"2022-07-22 16:07:40.000000000","message":"Done","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a0ff0ec6ebe0ad07ac134a54137f53b1a4443435","unresolved":true,"context_lines":[{"line_number":1302,"context_line":"    return True"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"def add_ip_rule(namespace, ip, iif\u003dNone, table\u003d253, priority\u003dNone, to\u003dNone):"},{"line_number":1306,"context_line":"    \"\"\"Create an IP rule in a namespace"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    :param namespace: (string) namespace name"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ca1ef01_e13f6c2a","line":1305,"range":{"start_line":1305,"start_character":47,"end_line":1305,"end_character":50},"in_reply_to":"bab87a75_f5289d25","updated":"2022-07-18 14:24:11.000000000","message":"I don\u0027t know if that refers to the same table. In \"ip rule\" those are the tables [1], that match with the defined in this file IP_RULE_TABLES.\n\n[1]https://man7.org/linux/man-pages/man8/ip-rule.8.html","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d91e5c0764783294a57fe0472f4a095e85ae626c","unresolved":true,"context_lines":[{"line_number":1309,"context_line":"    :param namespace: (string) namespace name"},{"line_number":1310,"context_line":"    :param ip: (string) source IP or CIDR address (IPv4, IPv6)"},{"line_number":1311,"context_line":"    :param iif: (Optional) (string) input interface name"},{"line_number":1312,"context_line":"    :param table: (Optional) (string, int) table number, default 253"},{"line_number":1313,"context_line":"                  (\"default\" table)"},{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf2b2787_b4a9b843","line":1312,"updated":"2022-07-22 06:24:37.000000000","message":"nit: Shouldn\u0027t we remove the Optional as it can\u0027t be None now?","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7371ab7fd17d948c5a13c5b8cdb63a5663679874","unresolved":false,"context_lines":[{"line_number":1309,"context_line":"    :param namespace: (string) namespace name"},{"line_number":1310,"context_line":"    :param ip: (string) source IP or CIDR address (IPv4, IPv6)"},{"line_number":1311,"context_line":"    :param iif: (Optional) (string) input interface name"},{"line_number":1312,"context_line":"    :param table: (Optional) (string, int) table number, default 253"},{"line_number":1313,"context_line":"                  (\"default\" table)"},{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c41a4521_ef3c6b0c","line":1312,"in_reply_to":"94fc6865_9ac178bf","updated":"2022-07-22 16:07:40.000000000","message":"Done","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b5d79e12e97e00de85ab5032fcd08a2f0c985443","unresolved":true,"context_lines":[{"line_number":1309,"context_line":"    :param namespace: (string) namespace name"},{"line_number":1310,"context_line":"    :param ip: (string) source IP or CIDR address (IPv4, IPv6)"},{"line_number":1311,"context_line":"    :param iif: (Optional) (string) input interface name"},{"line_number":1312,"context_line":"    :param table: (Optional) (string, int) table number, default 253"},{"line_number":1313,"context_line":"                  (\"default\" table)"},{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"}],"source_content_type":"text/x-python","patch_set":2,"id":"94fc6865_9ac178bf","line":1312,"in_reply_to":"cf2b2787_b4a9b843","updated":"2022-07-22 13:03:17.000000000","message":"We have provided a default value. We don\u0027t need to enforce this parameter.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d91e5c0764783294a57fe0472f4a095e85ae626c","unresolved":true,"context_lines":[{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1316,"context_line":"    \"\"\""},{"line_number":1317,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1318,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1319,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"},{"line_number":1320,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"aa5a489a_f178171b","line":1317,"updated":"2022-07-22 06:24:37.000000000","message":"If we want to be specific and fix any potential current issue or future, we may want to prefer have assertion here to ensure that nowhere in the code this argument is forced set to None, don\u0027t you think?","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1d230264411ccb94e3efdfbed6bc6b95b7fc5924","unresolved":true,"context_lines":[{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1316,"context_line":"    \"\"\""},{"line_number":1317,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1318,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1319,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"},{"line_number":1320,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"b32e8b03_9bdeba70","line":1317,"in_reply_to":"9767c393_f932bf49","updated":"2022-07-24 10:45:22.000000000","message":"Interesting way to fix that, if you could assert the behavior by an UT I think we should be good :-)","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b5d79e12e97e00de85ab5032fcd08a2f0c985443","unresolved":true,"context_lines":[{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1316,"context_line":"    \"\"\""},{"line_number":1317,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1318,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1319,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"},{"line_number":1320,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"9767c393_f932bf49","line":1317,"in_reply_to":"aa5a489a_f178171b","updated":"2022-07-22 13:03:17.000000000","message":"Right, good observation.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e7b70ae68c797067efa129d1c85eafa068164c27","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1315,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1316,"context_line":"    \"\"\""},{"line_number":1317,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1318,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1319,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"},{"line_number":1320,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"ceedd56e_e78c6de4","line":1317,"in_reply_to":"b32e8b03_9bdeba70","updated":"2022-07-26 12:54:25.000000000","message":"It is better to sanitize the input rather than raising an exception.","commit_id":"00bf6fc532ea246c18b7e79248b2bab0db9aed06"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"11c255b30f7185157438bedbc8474296a4869e9a","unresolved":true,"context_lines":[{"line_number":1302,"context_line":"    return True"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"def add_ip_rule(namespace, ip, iif\u003dNone, table\u003dNone, priority\u003dNone, to\u003dNone):"},{"line_number":1306,"context_line":"    \"\"\"Create an IP rule in a namespace"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    \"table\" parameter cannot be an empty value (None). By default, this method"},{"line_number":1309,"context_line":"    will assign \"IP_RULE_TABLES[\u0027default\u0027]\" value if None is passed."},{"line_number":1310,"context_line":""},{"line_number":1311,"context_line":"    :param namespace: (string) namespace name"},{"line_number":1312,"context_line":"    :param ip: (string) source IP or CIDR address (IPv4, IPv6)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a77e803_2bf3b277","line":1309,"range":{"start_line":1305,"start_character":0,"end_line":1309,"end_character":68},"updated":"2022-07-26 19:47:33.000000000","message":"Sorry this is little confusing to me. The comment specifies that `table` parameter cannot be an empty value but it defaults to None on its own. Why not default to `IP_RULE_TABLES[\u0027default\u0027]` directly?\nI.e.\ndef add_ip_rule(namespace, ip, iif\u003dNone, table\u003dIP_RULE_TABLES[\u0027default\u0027], priority\u003dNone, to\u003dNone)\n\nEDIT:\nO wait I see why not, you dont want a caller of this function to pass you \u0027None\u0027. In this case, I still think it would be good to default to IP_RULE_TABLES[\u0027default\u0027] in the function signature but keep your `if statement` check. And then update Doc string to \"... None parameter will implicitly default to IP_RULE_TABLES[\u0027default\u0027]...\"","commit_id":"45d77515fc716581abd96b8f6e6a6bf644e9d4f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2a9df749f7df5d80aeb7a1c62652270b6ba98d34","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"    return True"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"def add_ip_rule(namespace, ip, iif\u003dNone, table\u003dNone, priority\u003dNone, to\u003dNone):"},{"line_number":1306,"context_line":"    \"\"\"Create an IP rule in a namespace"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    \"table\" parameter cannot be an empty value (None). By default, this method"},{"line_number":1309,"context_line":"    will assign \"IP_RULE_TABLES[\u0027default\u0027]\" value if None is passed."},{"line_number":1310,"context_line":""},{"line_number":1311,"context_line":"    :param namespace: (string) namespace name"},{"line_number":1312,"context_line":"    :param ip: (string) source IP or CIDR address (IPv4, IPv6)"}],"source_content_type":"text/x-python","patch_set":4,"id":"eeb3deeb_1ce21822","line":1309,"range":{"start_line":1305,"start_character":0,"end_line":1309,"end_character":68},"in_reply_to":"1a77e803_2bf3b277","updated":"2022-07-28 10:20:30.000000000","message":"Done, but the result is the same and is explained in the method description.","commit_id":"45d77515fc716581abd96b8f6e6a6bf644e9d4f3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3495051e7b23419600a80350c4b063517e3e64ff","unresolved":true,"context_lines":[{"line_number":1316,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1317,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1318,"context_line":"    \"\"\""},{"line_number":1319,"context_line":"    table \u003d table if table is not None else IP_RULE_TABLES[\u0027default\u0027]"},{"line_number":1320,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1321,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1322,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"}],"source_content_type":"text/x-python","patch_set":5,"id":"36f9e3d3_f99e081a","line":1319,"updated":"2022-08-01 12:44:02.000000000","message":"do we need change in L1305 if we have that one?","commit_id":"47a0278812499add333497efe15b7fb176203f74"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dbbe36bfa4f33c6217425decf128accfd51b3a86","unresolved":false,"context_lines":[{"line_number":1316,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1317,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1318,"context_line":"    \"\"\""},{"line_number":1319,"context_line":"    table \u003d table if table is not None else IP_RULE_TABLES[\u0027default\u0027]"},{"line_number":1320,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1321,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1322,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"}],"source_content_type":"text/x-python","patch_set":5,"id":"b01a40b5_8692c2e5","line":1319,"in_reply_to":"310c6307_b8b0ce3d","updated":"2022-08-09 11:05:30.000000000","message":"Done","commit_id":"47a0278812499add333497efe15b7fb176203f74"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"2b2dff35abb34af7c6ef365780751c474e57d1c0","unresolved":true,"context_lines":[{"line_number":1316,"context_line":"    :param priority: (Optional) (string, int) rule priority"},{"line_number":1317,"context_line":"    :param to: (Optional) (string) destination IP or CIDR address (IPv4, IPv6)"},{"line_number":1318,"context_line":"    \"\"\""},{"line_number":1319,"context_line":"    table \u003d table if table is not None else IP_RULE_TABLES[\u0027default\u0027]"},{"line_number":1320,"context_line":"    ip_version \u003d common_utils.get_ip_version(ip)"},{"line_number":1321,"context_line":"    rules \u003d list_ip_rules(namespace, ip_version)"},{"line_number":1322,"context_line":"    if _exist_ip_rule(rules, ip, iif, table, priority, to):"}],"source_content_type":"text/x-python","patch_set":5,"id":"310c6307_b8b0ce3d","line":1319,"in_reply_to":"36f9e3d3_f99e081a","updated":"2022-08-01 15:19:48.000000000","message":"Haha we are going in circles ... I kinda had the same question in the comment I made earlier and later I realized why its here. I think that is because we want to prevent from user explicitly passing us \u0027None\u0027. That is because we use to allow a caller to pass us \u0027None\u0027 until now.\nIn summary, we want to default to IP_RULE_TABLES[\u0027default\u0027] if user does not pass anything AND also if user passes explicit \u0027None\u0027","commit_id":"47a0278812499add333497efe15b7fb176203f74"}],"neutron/tests/functional/privileged/agent/linux/test_ip_lib.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ae33ea7e6a9156a832bf896c74fe513c45cc63e5","unresolved":true,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            priv_ip_lib.delete_ip_rule(self.namespace, family\u003dip_family,"},{"line_number":331,"context_line":"                                       src\u003dip_address, src_len\u003dip_lenght,"},{"line_number":332,"context_line":"                                       table\u003d253)"},{"line_number":333,"context_line":"            rules \u003d ip_lib.list_ip_rules(self.namespace, ip_version)"},{"line_number":334,"context_line":"            self.assertFalse("},{"line_number":335,"context_line":"                self._check_rules(rules, [\u0027from\u0027], [ip_address],"}],"source_content_type":"text/x-python","patch_set":1,"id":"c29aa92f_5ba5aa81","line":332,"range":{"start_line":332,"start_character":45,"end_line":332,"end_character":48},"updated":"2022-07-18 14:27:31.000000000","message":"Why not the constant here too?","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"472944c255823e19f417ffb53cbd35f6de8e9353","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            priv_ip_lib.delete_ip_rule(self.namespace, family\u003dip_family,"},{"line_number":331,"context_line":"                                       src\u003dip_address, src_len\u003dip_lenght,"},{"line_number":332,"context_line":"                                       table\u003d253)"},{"line_number":333,"context_line":"            rules \u003d ip_lib.list_ip_rules(self.namespace, ip_version)"},{"line_number":334,"context_line":"            self.assertFalse("},{"line_number":335,"context_line":"                self._check_rules(rules, [\u0027from\u0027], [ip_address],"}],"source_content_type":"text/x-python","patch_set":1,"id":"abff49e0_02bfd5dc","line":332,"range":{"start_line":332,"start_character":45,"end_line":332,"end_character":48},"in_reply_to":"c29aa92f_5ba5aa81","updated":"2022-07-19 08:58:56.000000000","message":"Done","commit_id":"a13fae532018bb47b3b43c9c5202ee90d7f8d13c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1d230264411ccb94e3efdfbed6bc6b95b7fc5924","unresolved":true,"context_lines":[{"line_number":345,"context_line":"        priv_ip_lib.delete_ip_rule(self.namespace, iifname\u003diif)"},{"line_number":346,"context_line":"        rules \u003d ip_lib.list_ip_rules(self.namespace, 4)"},{"line_number":347,"context_line":"        self.assertFalse("},{"line_number":348,"context_line":"            self._check_rules(rules, [\u0027iif\u0027], [iif], raise_exception\u003dFalse))"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def test_add_rule_table(self):"},{"line_number":351,"context_line":"        table \u003d 212"}],"source_content_type":"text/x-python","patch_set":3,"id":"40f593c4_afbb4d09","line":348,"updated":"2022-07-24 10:45:22.000000000","message":"Is it possible to assert that table is equal to \u0027default\u0027?","commit_id":"7f37b928633f93dcff056085333b5b0aa39f1ca8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e7b70ae68c797067efa129d1c85eafa068164c27","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        priv_ip_lib.delete_ip_rule(self.namespace, iifname\u003diif)"},{"line_number":346,"context_line":"        rules \u003d ip_lib.list_ip_rules(self.namespace, 4)"},{"line_number":347,"context_line":"        self.assertFalse("},{"line_number":348,"context_line":"            self._check_rules(rules, [\u0027iif\u0027], [iif], raise_exception\u003dFalse))"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def test_add_rule_table(self):"},{"line_number":351,"context_line":"        table \u003d 212"}],"source_content_type":"text/x-python","patch_set":3,"id":"aad92a6e_ff6d6d7a","line":348,"in_reply_to":"40f593c4_afbb4d09","updated":"2022-07-26 12:54:25.000000000","message":"Why here? What is changed neutron.agent.linux.ip_lib.add_ip_rule, not neutron.privileged.agent.linux.ip_lib.add_ip_rule.\n\nI\u0027ve added a test for this.","commit_id":"7f37b928633f93dcff056085333b5b0aa39f1ca8"}]}
