)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5bca7b29e3242295055b186aeb79a94664789731","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b1555439_7ce68e37","updated":"2025-04-16 06:55:01.000000000","message":"Just some nits and an possible improvement in the tests","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d2ea283a_0fe4cdda","in_reply_to":"b1555439_7ce68e37","updated":"2025-06-11 10:09:38.000000000","message":"Thanks for the review, I\u0027ve expanded the test for policy deletion by chain","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d090f12f_c36714a2","updated":"2025-04-16 19:39:47.000000000","message":"Thanks for the additions! Just a few changes necessary to guard against older OVS versions and to avoid writing the empty string to the db instead of an empty set.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"618d6e42_cf6eebf2","in_reply_to":"d090f12f_c36714a2","updated":"2025-06-11 10:09:38.000000000","message":"Thanks for the review!\nI\u0027ve updated the patch to guard against older OVS versions and ensure the `chain` column is correctly handled as an empty list [] for the default chain (instead of [\u0027\u0027]). The tests now also skip if the `chain` column is not present.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"cabc13ca49b13f0cad01e22203fe75550249f204","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"346327e5_2fc3aae2","updated":"2025-08-04 10:06:41.000000000","message":"Hello, gentle ping, are there any questions for the PR or is there something holding back?","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"808b20be044921b45914fbae98c4abfac8682bed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b49f51fb_6ad3c5d6","updated":"2025-06-30 10:19:14.000000000","message":"Just a gentle ping — please let me know if you’d like any changes","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"28d276ca_adf58fc0","updated":"2025-06-11 10:09:38.000000000","message":"Sorry, I wrote the reply posts but missed that they still need to be posted. I\u0027ve updated all the patches, is there anything else I need to do?","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"deed7b8487a02ac1f3471cc8c65996024a2b43a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"82f7a105_2270089c","updated":"2025-08-05 13:20:43.000000000","message":"Thanks for the change, and sorry for the delay in getting it approved.","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bdb4626e67d53bc5eafc5cd942b0f7a081baa3bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1b9cd149_2ff69c61","updated":"2025-05-12 11:57:39.000000000","message":"There was an ovsdbapp release proposed for F-1, if this merges this week can update the hash.\n\nhttps://review.opendev.org/c/openstack/releases/+/949468","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"}],"ovsdbapp/backend/ovs_idl/idlutils.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2b19405b145582377fbf6a991dd3ac2d6d02e26b","unresolved":true,"context_lines":[{"line_number":487,"context_line":"def has_table(idl_, table):"},{"line_number":488,"context_line":"    \"\"\"Check if a table exists in the IDL schema."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    :param _idl: The Idl instance"},{"line_number":491,"context_line":"    :type _idl: ovs.db.idl.Idl"},{"line_number":492,"context_line":"    :param table: The name of the table to check for"},{"line_number":493,"context_line":"    :type table: str"}],"source_content_type":"text/x-python","patch_set":4,"id":"4bf312c0_f49ed37c","line":490,"range":{"start_line":490,"start_character":11,"end_line":490,"end_character":15},"updated":"2025-08-05 15:07:34.000000000","message":"super nit: idl_ (below as well)\n\nbut only fix if you have to respin","commit_id":"d84c82e6aceafcf1680ed816906f7946d366c66b"}],"ovsdbapp/constants.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5bca7b29e3242295055b186aeb79a94664789731","unresolved":true,"context_lines":[{"line_number":35,"context_line":"POLICY_ACTION_TYPES \u003d (POLICY_ACTION_ALLOW,"},{"line_number":36,"context_line":"                       POLICY_ACTION_DROP,"},{"line_number":37,"context_line":"                       POLICY_ACTION_REROUTE,"},{"line_number":38,"context_line":"                       POLICY_ACTION_JUMP)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"PROTO_TCP \u003d \u0027tcp\u0027"},{"line_number":41,"context_line":"PROTO_UDP \u003d \u0027udp\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"462ac960_0db77bdb","line":38,"updated":"2025-04-16 06:55:01.000000000","message":"nit: could be useful to add an extra line here, for future additions, keeping the git history:\n```\nPOLICY_ACTION_TYPES \u003d (POLICY_ACTION_ALLOW,\n                       POLICY_ACTION_DROP,\n                       POLICY_ACTION_REROUTE,\n                       POLICY_ACTION_JUMP,\n                       )\n```","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"POLICY_ACTION_TYPES \u003d (POLICY_ACTION_ALLOW,"},{"line_number":36,"context_line":"                       POLICY_ACTION_DROP,"},{"line_number":37,"context_line":"                       POLICY_ACTION_REROUTE,"},{"line_number":38,"context_line":"                       POLICY_ACTION_JUMP)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"PROTO_TCP \u003d \u0027tcp\u0027"},{"line_number":41,"context_line":"PROTO_UDP \u003d \u0027udp\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ad08fada_bb837337","line":38,"in_reply_to":"462ac960_0db77bdb","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"}],"ovsdbapp/schema/ovn_northbound/commands.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5bca7b29e3242295055b186aeb79a94664789731","unresolved":true,"context_lines":[{"line_number":1556,"context_line":"        for policy in lr.policies:"},{"line_number":1557,"context_line":"            if idlutils.row_match(policy, self.conditions):"},{"line_number":1558,"context_line":"                policy_chain \u003d policy.chain[0]"},{"line_number":1559,"context_line":"                if policy_chain \u003d\u003d self.chain:"},{"line_number":1560,"context_line":"                    found \u003d True"},{"line_number":1561,"context_line":"                    lr.delvalue(\u0027policies\u0027, policy)"},{"line_number":1562,"context_line":"                    policy.delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a327f58_974b287a","line":1559,"range":{"start_line":1559,"start_character":16,"end_line":1559,"end_character":46},"updated":"2025-04-16 06:55:01.000000000","message":"You can make this comparison in the upper check\n```\n        for policy in lr.policies:\n            if (idlutils.row_match(policy, self.conditions) and\n                    policy.chain[0] \u003d\u003d self.chain):\n                found \u003d True\n                ...\n```","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"        for policy in lr.policies:"},{"line_number":1557,"context_line":"            if idlutils.row_match(policy, self.conditions):"},{"line_number":1558,"context_line":"                policy_chain \u003d policy.chain[0]"},{"line_number":1559,"context_line":"                if policy_chain \u003d\u003d self.chain:"},{"line_number":1560,"context_line":"                    found \u003d True"},{"line_number":1561,"context_line":"                    lr.delvalue(\u0027policies\u0027, policy)"},{"line_number":1562,"context_line":"                    policy.delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"293d21c6_30a41c8e","line":1559,"range":{"start_line":1559,"start_character":16,"end_line":1559,"end_character":46},"in_reply_to":"5a327f58_974b287a","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1511,"context_line":"    def run_idl(self, txn):"},{"line_number":1512,"context_line":"        lr \u003d self.api.lookup(\u0027Logical_Router\u0027, self.router)"},{"line_number":1513,"context_line":"        for policy in lr.policies:"},{"line_number":1514,"context_line":"            policy_chain \u003d policy.chain[0]"},{"line_number":1515,"context_line":"            if ((self.priority, self.match, self.chain) \u003d\u003d"},{"line_number":1516,"context_line":"                    (policy.priority, policy.match, policy_chain)):"},{"line_number":1517,"context_line":"                if self.may_exist:"}],"source_content_type":"text/x-python","patch_set":3,"id":"07941689_571573a4","line":1514,"updated":"2025-04-16 19:39:47.000000000","message":"The access of policy.chain needs to be protected for the case where it is not part of the schema on older ovn installs, e.g. with catching AttributeError. Additionally, Logical_Router_Policy.chain has min\u003d0, max\u003d1, so it may be empty, so we\u0027d need to handle IndexError as well, defaulting to empty string to make policies without chains match below.\n\nThe reason this is currently working in the existing lr_polict_* tests is because the patch incorrectly sets chain to `[\u0027\u0027]` when it is empty. policies added with ovn-nbctl will not do this.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"    def run_idl(self, txn):"},{"line_number":1512,"context_line":"        lr \u003d self.api.lookup(\u0027Logical_Router\u0027, self.router)"},{"line_number":1513,"context_line":"        for policy in lr.policies:"},{"line_number":1514,"context_line":"            policy_chain \u003d policy.chain[0]"},{"line_number":1515,"context_line":"            if ((self.priority, self.match, self.chain) \u003d\u003d"},{"line_number":1516,"context_line":"                    (policy.priority, policy.match, policy_chain)):"},{"line_number":1517,"context_line":"                if self.may_exist:"}],"source_content_type":"text/x-python","patch_set":3,"id":"cc17bc74_800b746c","line":1514,"in_reply_to":"07941689_571573a4","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"        policy.priority \u003d self.priority"},{"line_number":1525,"context_line":"        policy.match \u003d self.match"},{"line_number":1526,"context_line":"        policy.action \u003d self.action"},{"line_number":1527,"context_line":"        policy.chain \u003d self.chain"},{"line_number":1528,"context_line":"        self.set_columns(policy, **self.columns)"},{"line_number":1529,"context_line":"        lr.addvalue(\u0027policies\u0027, policy)"},{"line_number":1530,"context_line":"        self.result \u003d policy.uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"040f508a_157252ca","line":1527,"updated":"2025-04-16 19:39:47.000000000","message":"python-ovs seems to be handling it since your test passes, but I would have expected setting a column that is a set type (optional values are represented as sets of 0 or 1 values in ovsdb) to a string to fail. Still looking for why it works, but `[self.chain] if self.chain else []` or similar is what I would have expected this to need. This would also solve the problem which currently exists where policy.chain is getting set in the db as `[\u0027\u0027]` when it is empty instead of `[]`.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        policy.priority \u003d self.priority"},{"line_number":1525,"context_line":"        policy.match \u003d self.match"},{"line_number":1526,"context_line":"        policy.action \u003d self.action"},{"line_number":1527,"context_line":"        policy.chain \u003d self.chain"},{"line_number":1528,"context_line":"        self.set_columns(policy, **self.columns)"},{"line_number":1529,"context_line":"        lr.addvalue(\u0027policies\u0027, policy)"},{"line_number":1530,"context_line":"        self.result \u003d policy.uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"d09b7e32_85ff4020","line":1527,"in_reply_to":"040f508a_157252ca","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1555,"context_line":"        found \u003d False"},{"line_number":1556,"context_line":"        for policy in lr.policies:"},{"line_number":1557,"context_line":"            if (idlutils.row_match(policy, self.conditions) and"},{"line_number":1558,"context_line":"                    policy.chain[0] \u003d\u003d self.chain):"},{"line_number":1559,"context_line":"                found \u003d True"},{"line_number":1560,"context_line":"                lr.delvalue(\u0027policies\u0027, policy)"},{"line_number":1561,"context_line":"                policy.delete()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ecba978_d57b0f1f","line":1558,"range":{"start_line":1558,"start_character":19,"end_line":1558,"end_character":35},"updated":"2025-04-16 19:39:47.000000000","message":"same as above re: protecting against AttributeError and IndexError.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"        found \u003d False"},{"line_number":1556,"context_line":"        for policy in lr.policies:"},{"line_number":1557,"context_line":"            if (idlutils.row_match(policy, self.conditions) and"},{"line_number":1558,"context_line":"                    policy.chain[0] \u003d\u003d self.chain):"},{"line_number":1559,"context_line":"                found \u003d True"},{"line_number":1560,"context_line":"                lr.delvalue(\u0027policies\u0027, policy)"},{"line_number":1561,"context_line":"                policy.delete()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a3424b3_e54e33e1","line":1558,"range":{"start_line":1558,"start_character":19,"end_line":1558,"end_character":35},"in_reply_to":"7ecba978_d57b0f1f","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1579,"context_line":"        if self.chain is not None:"},{"line_number":1580,"context_line":"            self.result \u003d [rowview.RowView(r)"},{"line_number":1581,"context_line":"                           for r in lr.policies"},{"line_number":1582,"context_line":"                           if r.chain[0] \u003d\u003d self.chain]"},{"line_number":1583,"context_line":"        else:"},{"line_number":1584,"context_line":"            self.result \u003d [rowview.RowView(r) for r in lr.policies]"},{"line_number":1585,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"e0a14e7e_eaa89db1","line":1582,"range":{"start_line":1582,"start_character":30,"end_line":1582,"end_character":40},"updated":"2025-04-16 19:39:47.000000000","message":"same as above re: protecting against AttributeError and IndexError.\n\nThough normally if there is a command that correlates to an ovn ctl command, we try (and have failed a bit over the years) to match behavior to that, and ovn-nbctl doesn\u0027t have a chain option to lr-policy-list, though if this is useful for apps, I\u0027m not against it.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1579,"context_line":"        if self.chain is not None:"},{"line_number":1580,"context_line":"            self.result \u003d [rowview.RowView(r)"},{"line_number":1581,"context_line":"                           for r in lr.policies"},{"line_number":1582,"context_line":"                           if r.chain[0] \u003d\u003d self.chain]"},{"line_number":1583,"context_line":"        else:"},{"line_number":1584,"context_line":"            self.result \u003d [rowview.RowView(r) for r in lr.policies]"},{"line_number":1585,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"91671a1d_21e41532","line":1582,"range":{"start_line":1582,"start_character":30,"end_line":1582,"end_character":40},"in_reply_to":"e0a14e7e_eaa89db1","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"}],"ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5bca7b29e3242295055b186aeb79a94664789731","unresolved":true,"context_lines":[{"line_number":1546,"context_line":""},{"line_number":1547,"context_line":"    def test_lr_policy_del_by_chain(self):"},{"line_number":1548,"context_line":"        lr \u003d self._three_policies()"},{"line_number":1549,"context_line":"        custom_policy \u003d self._lr_policy_add("},{"line_number":1550,"context_line":"            20, self.lr_policy_match1, const.POLICY_ACTION_ALLOW,"},{"line_number":1551,"context_line":"            chain\u003d\u0027custom-chain\u0027, router\u003dlr,"},{"line_number":1552,"context_line":"        )"},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":"        # Delete only from custom chain"},{"line_number":1555,"context_line":"        self.api.lr_policy_del(lr.uuid,"},{"line_number":1556,"context_line":"                               chain\u003d\u0027custom-chain\u0027).execute(check_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f582dada_c1195f46","line":1553,"range":{"start_line":1549,"start_character":8,"end_line":1553,"end_character":1},"updated":"2025-04-16 06:55:01.000000000","message":"Is it possible to do this for several policies, in a loop? The check loop should:\n* The the current number of policies\n* Delete 1\n* Make the corresponding checks","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1546,"context_line":""},{"line_number":1547,"context_line":"    def test_lr_policy_del_by_chain(self):"},{"line_number":1548,"context_line":"        lr \u003d self._three_policies()"},{"line_number":1549,"context_line":"        custom_policy \u003d self._lr_policy_add("},{"line_number":1550,"context_line":"            20, self.lr_policy_match1, const.POLICY_ACTION_ALLOW,"},{"line_number":1551,"context_line":"            chain\u003d\u0027custom-chain\u0027, router\u003dlr,"},{"line_number":1552,"context_line":"        )"},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":"        # Delete only from custom chain"},{"line_number":1555,"context_line":"        self.api.lr_policy_del(lr.uuid,"},{"line_number":1556,"context_line":"                               chain\u003d\u0027custom-chain\u0027).execute(check_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b75da784_26d86a22","line":1553,"range":{"start_line":1549,"start_character":8,"end_line":1553,"end_character":1},"in_reply_to":"f582dada_c1195f46","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5bca7b29e3242295055b186aeb79a94664789731","unresolved":true,"context_lines":[{"line_number":1555,"context_line":"        self.api.lr_policy_del(lr.uuid,"},{"line_number":1556,"context_line":"                               chain\u003d\u0027custom-chain\u0027).execute(check_error\u003dTrue)"},{"line_number":1557,"context_line":""},{"line_number":1558,"context_line":"        self.assertEqual(len(lr.policies), 3)"},{"line_number":1559,"context_line":"        self.assertNotIn(custom_policy, lr.policies)"},{"line_number":1560,"context_line":""},{"line_number":1561,"context_line":"    def test_lr_policy_list(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"0f522ebc_fe00b1a5","line":1558,"range":{"start_line":1558,"start_character":8,"end_line":1558,"end_character":45},"updated":"2025-04-16 06:55:01.000000000","message":"Can you make this check before and after the deletion?","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"        self.api.lr_policy_del(lr.uuid,"},{"line_number":1556,"context_line":"                               chain\u003d\u0027custom-chain\u0027).execute(check_error\u003dTrue)"},{"line_number":1557,"context_line":""},{"line_number":1558,"context_line":"        self.assertEqual(len(lr.policies), 3)"},{"line_number":1559,"context_line":"        self.assertNotIn(custom_policy, lr.policies)"},{"line_number":1560,"context_line":""},{"line_number":1561,"context_line":"    def test_lr_policy_list(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"32d4e9e1_db032961","line":1558,"range":{"start_line":1558,"start_character":8,"end_line":1558,"end_character":45},"in_reply_to":"0f522ebc_fe00b1a5","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"369709b24d3c1a929eeee0a88e1283b919466e76"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1377,"context_line":"        action \u003d const.POLICY_ACTION_ALLOW"},{"line_number":1378,"context_line":"        policy \u003d self._lr_policy_add(priority, self.lr_policy_match1, action)"},{"line_number":1379,"context_line":"        self.assertEqual(policy.nexthop, [])"},{"line_number":1380,"context_line":"        self.assertEqual(policy.nexthops, [])"},{"line_number":1381,"context_line":""},{"line_number":1382,"context_line":"    def test_lr_policy_add_custom_chain(self):"},{"line_number":1383,"context_line":"        priority \u003d 10"}],"source_content_type":"text/x-python","patch_set":3,"id":"c6265f8d_6136f38c","line":1380,"updated":"2025-04-16 19:39:47.000000000","message":"a version of this test that runs only if chain is a valid column that asserts that policy.chain is [] when no chain is specified should be added.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"        action \u003d const.POLICY_ACTION_ALLOW"},{"line_number":1378,"context_line":"        policy \u003d self._lr_policy_add(priority, self.lr_policy_match1, action)"},{"line_number":1379,"context_line":"        self.assertEqual(policy.nexthop, [])"},{"line_number":1380,"context_line":"        self.assertEqual(policy.nexthops, [])"},{"line_number":1381,"context_line":""},{"line_number":1382,"context_line":"    def test_lr_policy_add_custom_chain(self):"},{"line_number":1383,"context_line":"        priority \u003d 10"}],"source_content_type":"text/x-python","patch_set":3,"id":"35e8a458_3481fd9d","line":1380,"in_reply_to":"c6265f8d_6136f38c","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"431e6f2260ebfcfaf255991ae55d387c3fedfb26","unresolved":true,"context_lines":[{"line_number":1378,"context_line":"        policy \u003d self._lr_policy_add(priority, self.lr_policy_match1, action)"},{"line_number":1379,"context_line":"        self.assertEqual(policy.nexthop, [])"},{"line_number":1380,"context_line":"        self.assertEqual(policy.nexthops, [])"},{"line_number":1381,"context_line":""},{"line_number":1382,"context_line":"    def test_lr_policy_add_custom_chain(self):"},{"line_number":1383,"context_line":"        priority \u003d 10"},{"line_number":1384,"context_line":"        action \u003d const.POLICY_ACTION_ALLOW"}],"source_content_type":"text/x-python","patch_set":3,"id":"9be561a2_3cee01ba","line":1381,"updated":"2025-04-16 19:39:47.000000000","message":"All tests that involve chains should be `self.skipTest`-ed if `Logical_Router_Policy.chain` is not a valid column, e.g. ```\u0027Logical_Router_Policy\u0027 in api.tables and \u0027chain\u0027 in api.tables[\u0027Logical_Router_Policy\u0027].columns``` (which would be a good candidate for `idlutils.py` general purpose method additions like `has_table()` and `table_has_column()`.","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"},{"author":{"_account_id":37943,"name":"Renat","display_name":"Renat","email":"RMustafin@k2.cloud","username":"wlix13"},"change_message_id":"5d7dab3cbf8f86004177691ab21092b6c9c2272c","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"        policy \u003d self._lr_policy_add(priority, self.lr_policy_match1, action)"},{"line_number":1379,"context_line":"        self.assertEqual(policy.nexthop, [])"},{"line_number":1380,"context_line":"        self.assertEqual(policy.nexthops, [])"},{"line_number":1381,"context_line":""},{"line_number":1382,"context_line":"    def test_lr_policy_add_custom_chain(self):"},{"line_number":1383,"context_line":"        priority \u003d 10"},{"line_number":1384,"context_line":"        action \u003d const.POLICY_ACTION_ALLOW"}],"source_content_type":"text/x-python","patch_set":3,"id":"db099780_58e967c0","line":1381,"in_reply_to":"9be561a2_3cee01ba","updated":"2025-06-11 10:09:38.000000000","message":"Done","commit_id":"7dae6b08bf0508aa42c405d16b37904e02a7e39d"}]}
