)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This is patchset 2 of 2 for OVN driver handling of security-group-logging."},{"line_number":10,"context_line":"It includes the core changes and tests for this feature."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This feature requires OVN 20.12 [0] or newer. Functional test will be"},{"line_number":13,"context_line":"skipped for non-supported versions."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Related-Bug: 1468366"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"9d7104a4_648c7d02","line":12,"range":{"start_line":12,"start_character":22,"end_line":12,"end_character":32},"updated":"2021-03-01 16:41:13.000000000","message":"Currently, the tests are skipped on the gate. Perhaps we should bump OVN to get the functionality and prove the tests are passing before merging this?","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This is patchset 2 of 2 for OVN driver handling of security-group-logging."},{"line_number":10,"context_line":"It includes the core changes and tests for this feature."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This feature requires OVN 20.12 [0] or newer. Functional test will be"},{"line_number":13,"context_line":"skipped for non-supported versions."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Related-Bug: 1468366"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"929a8906_fd3d3ff3","line":12,"range":{"start_line":12,"start_character":22,"end_line":12,"end_character":32},"in_reply_to":"9d7104a4_648c7d02","updated":"2021-03-01 21:05:02.000000000","message":"Yeah, I took a stab at that, but hit a roadblock: bumping ovn by itself makes it incompatible to ovs tag 0047ca3a0290f1ef954f2c76b31477cf4b9755f5\nAs suggested by Slawek [0], I changed the tests to skip and have this Gerrit unblocked. At least that was the plan. :^)\n\n[0]: https://review.opendev.org/c/openstack/neutron/+/768129/32/neutron/tests/functional/services/logapi/drivers/ovn/test_driver.py#102   (Feb/15/21)\n\nalso see: https://review.opendev.org/c/openstack/neutron/+/775383\n     https://review.opendev.org/c/openstack/neutron/+/775383/1/zuul.d/base.yaml#23","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"}],"doc/source/contributor/internals/ovn/network_logging.rst":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"64fcef2c738ecb0a5dce2fca37799e09a2737373","unresolved":true,"context_lines":[{"line_number":8,"context_line":"manage affected security group rules. Thus, there is no need for an agent."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It is good to keep in mind that Openstack Security Groups (SG) and their rules"},{"line_number":11,"context_line":"(SGR) map 1:1 into OVN\u0027s Port Groups (PG) and ACLs:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  .. code-block:: none"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"e826ef52_092c6e0f","line":11,"range":{"start_line":11,"start_character":46,"end_line":11,"end_character":50},"updated":"2021-02-08 12:42:55.000000000","message":"nit: \"Access Control Lists (ACLs)\" for consistency? Although it\u0027s a more generic terminology so no real need.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"7117e7f0119c5ef5c96252c5cb2db7a050e6a764","unresolved":false,"context_lines":[{"line_number":8,"context_line":"manage affected security group rules. Thus, there is no need for an agent."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It is good to keep in mind that Openstack Security Groups (SG) and their rules"},{"line_number":11,"context_line":"(SGR) map 1:1 into OVN\u0027s Port Groups (PG) and ACLs:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  .. code-block:: none"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"e88bb166_e18e850d","line":11,"range":{"start_line":11,"start_character":46,"end_line":11,"end_character":50},"in_reply_to":"e826ef52_092c6e0f","updated":"2021-02-08 18:52:00.000000000","message":"Good catch! Thanks.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"64fcef2c738ecb0a5dce2fca37799e09a2737373","unresolved":true,"context_lines":[{"line_number":20,"context_line":"With regards to neutron ports, network logging entries (NLE) can filter"},{"line_number":21,"context_line":"on neutron ports, also known as \"targets\". When that is the case, the"},{"line_number":22,"context_line":"underlying implementation finds the corresponding SGs out of the"},{"line_number":23,"context_line":"neutron port. So it is all back to SGs and affected SGRs. Or PGs and ACLs"},{"line_number":24,"context_line":"as far as OVN is concerned."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"For more info on port groups, see:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"b546d844_4fa03174","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":7},"updated":"2021-02-08 12:42:55.000000000","message":"nit: Neutron?","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"7117e7f0119c5ef5c96252c5cb2db7a050e6a764","unresolved":false,"context_lines":[{"line_number":20,"context_line":"With regards to neutron ports, network logging entries (NLE) can filter"},{"line_number":21,"context_line":"on neutron ports, also known as \"targets\". When that is the case, the"},{"line_number":22,"context_line":"underlying implementation finds the corresponding SGs out of the"},{"line_number":23,"context_line":"neutron port. So it is all back to SGs and affected SGRs. Or PGs and ACLs"},{"line_number":24,"context_line":"as far as OVN is concerned."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"For more info on port groups, see:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"cf5712ab_bf3cdda7","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":7},"in_reply_to":"b546d844_4fa03174","updated":"2021-02-08 18:52:00.000000000","message":"Done","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"64fcef2c738ecb0a5dce2fca37799e09a2737373","unresolved":true,"context_lines":[{"line_number":27,"context_line":"https://docs.openstack.org/networking-ovn/latest/contributor/design/acl_optimizations.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In order to enable network logging, the neutron OVN driver relies on 2"},{"line_number":30,"context_line":"tables of the northbound database: Meter and ACL."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Meter Table"},{"line_number":33,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1732fbd0_a289fb13","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":24},"updated":"2021-02-08 12:42:55.000000000","message":"nit: Northbound?","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"7117e7f0119c5ef5c96252c5cb2db7a050e6a764","unresolved":false,"context_lines":[{"line_number":27,"context_line":"https://docs.openstack.org/networking-ovn/latest/contributor/design/acl_optimizations.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In order to enable network logging, the neutron OVN driver relies on 2"},{"line_number":30,"context_line":"tables of the northbound database: Meter and ACL."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Meter Table"},{"line_number":33,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"412ef39e_9a19d79a","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":24},"in_reply_to":"1732fbd0_a289fb13","updated":"2021-02-08 18:52:00.000000000","message":"Done","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"}],"neutron/conf/services/logging.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f9822b9a4351d0f6f6629c58867b891f144bf9d","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    cfg.IntOpt("},{"line_number":23,"context_line":"        \u0027rate_limit\u0027,"},{"line_number":24,"context_line":"        default\u003d100,"},{"line_number":25,"context_line":"        min\u003d1,"},{"line_number":26,"context_line":"        help\u003d_(\u0027Maximum packets logging per second.\u0027)),"},{"line_number":27,"context_line":"    cfg.IntOpt("},{"line_number":28,"context_line":"        \u0027burst_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7c9fd457_133df296","line":25,"updated":"2021-02-08 14:01:02.000000000","message":"We should mention in the commit message the reasoning for this change","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"974580a9ecd17b6945bce4e4f994a77e1f805e2d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    cfg.IntOpt("},{"line_number":23,"context_line":"        \u0027rate_limit\u0027,"},{"line_number":24,"context_line":"        default\u003d100,"},{"line_number":25,"context_line":"        min\u003d1,"},{"line_number":26,"context_line":"        help\u003d_(\u0027Maximum packets logging per second.\u0027)),"},{"line_number":27,"context_line":"    cfg.IntOpt("},{"line_number":28,"context_line":"        \u0027burst_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"48353b54_a03c54c9","line":25,"in_reply_to":"7c9fd457_133df296","updated":"2021-02-08 20:07:54.000000000","message":"Yes, good point! I did not mean to sneak this change here like that.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"56a03350ee3cf93d2a3c8d037c2c31f3c438ca9b","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    cfg.IntOpt("},{"line_number":23,"context_line":"        \u0027rate_limit\u0027,"},{"line_number":24,"context_line":"        default\u003d100,"},{"line_number":25,"context_line":"        min\u003d1,"},{"line_number":26,"context_line":"        help\u003d_(\u0027Maximum packets logging per second.\u0027)),"},{"line_number":27,"context_line":"    cfg.IntOpt("},{"line_number":28,"context_line":"        \u0027burst_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"5bb5ad0a_2c7b7ea5","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":13},"updated":"2021-02-11 10:17:21.000000000","message":"The existing 100 comes from ovs rate_limit apparently looking at neutron/agent/common/ovs_lib.py (in set_controller_rate_limit())\n        if controller_rate_limit \u003c CTRL_RATE_LIMIT_MIN:\n            LOG.info(\"rate limit\u0027s value must be at least 100\")\n            controller_rate_limit \u003d CTRL_RATE_LIMIT_MIN\n\nSo lowering the limit would pass for openvswitch driver too, though in that case I think we should raise the loglevel in that pasted line (so users setting 1 would not miss the warning)","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dea41b0cd70c511e78474d14a1dab52022d348cc","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    cfg.IntOpt("},{"line_number":23,"context_line":"        \u0027rate_limit\u0027,"},{"line_number":24,"context_line":"        default\u003d100,"},{"line_number":25,"context_line":"        min\u003d1,"},{"line_number":26,"context_line":"        help\u003d_(\u0027Maximum packets logging per second.\u0027)),"},{"line_number":27,"context_line":"    cfg.IntOpt("},{"line_number":28,"context_line":"        \u0027burst_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"e41d7cb9_44d3f8de","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":13},"in_reply_to":"5bb5ad0a_2c7b7ea5","updated":"2021-02-11 10:54:42.000000000","message":"Right, this is an OVS limitation [1]. And OVS agent is enforcing the correctness of this parameter checking this limit.\n\n[1]https://github.com/openvswitch/ovs/blob/80e74da4fd8bfdaba92105560ce144b4b2d00e36/vswitchd/vswitch.ovsschema#L590","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"548db72b883455ff80345b7ac05e69628c15be69","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    cfg.IntOpt("},{"line_number":23,"context_line":"        \u0027rate_limit\u0027,"},{"line_number":24,"context_line":"        default\u003d100,"},{"line_number":25,"context_line":"        min\u003d1,"},{"line_number":26,"context_line":"        help\u003d_(\u0027Maximum packets logging per second.\u0027)),"},{"line_number":27,"context_line":"    cfg.IntOpt("},{"line_number":28,"context_line":"        \u0027burst_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"a1ce1898_3381053e","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":13},"in_reply_to":"e41d7cb9_44d3f8de","updated":"2021-02-12 02:27:56.000000000","message":"Thank you for educating me on that! I reverted this change.","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"}],"neutron/services/logapi/drivers/ovn/driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class LoggingNotSupported(n_exceptions.NeutronException):"},{"line_number":42,"context_line":"    message \u003d _(\"The OVN Northbound schema selected does not offer \""},{"line_number":43,"context_line":"                \"support for neutron network log functionality.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7d470953_d8c1483c","line":42,"range":{"start_line":42,"start_character":17,"end_line":42,"end_character":51},"updated":"2021-02-05 12:00:30.000000000","message":"May I suggest: \"The current OVN version does not offer\"...\n\nBecause I don\u0027t think the feature implementation lies only in the Northbound db schema, it does need support in other OVN components as well.","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class LoggingNotSupported(n_exceptions.NeutronException):"},{"line_number":42,"context_line":"    message \u003d _(\"The OVN Northbound schema selected does not offer \""},{"line_number":43,"context_line":"                \"support for neutron network log functionality.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"912e23bc_8a2d34c7","line":42,"range":{"start_line":42,"start_character":17,"end_line":42,"end_character":51},"in_reply_to":"0dc5b963_67cbd327","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class LoggingNotSupported(n_exceptions.NeutronException):"},{"line_number":42,"context_line":"    message \u003d _(\"The OVN Northbound schema selected does not offer \""},{"line_number":43,"context_line":"                \"support for neutron network log functionality.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"0dc5b963_67cbd327","line":42,"range":{"start_line":42,"start_character":17,"end_line":42,"end_character":51},"in_reply_to":"7d470953_d8c1483c","updated":"2021-02-05 16:43:55.000000000","message":"hmm... we actually managed to implement fair meters w/out changing the SB + ovn-controller at this time. But it does not hurst to make it a little more generic. Will do.","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":70,"context_line":"            \u0027Meter\u0027, (\u0027name\u0027, \u0027\u003d\u0027, self.meter_name)).execute(check_error\u003dTrue)"},{"line_number":71,"context_line":"        if meter:"},{"line_number":72,"context_line":"            meter \u003d meter[0]"},{"line_number":73,"context_line":"            meter_band \u003d self.ovn_nb.lookup(\u0027Meter_Band\u0027, meter.bands[0].uuid)"},{"line_number":74,"context_line":"            if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":75,"context_line":"                    meter.fair[0] is True,"},{"line_number":76,"context_line":"                    meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"}],"source_content_type":"text/x-python","patch_set":16,"id":"0ee67ac7_3c60e2d5","line":73,"updated":"2021-02-05 12:00:30.000000000","message":"Q: This could raise a RowNotFound exception, should we handle it ?\n\nOr, since there\u0027s an entry in the \"Meter\" table there always will be a correspondent entry in \"Meter_Band\" table as well ?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":70,"context_line":"            \u0027Meter\u0027, (\u0027name\u0027, \u0027\u003d\u0027, self.meter_name)).execute(check_error\u003dTrue)"},{"line_number":71,"context_line":"        if meter:"},{"line_number":72,"context_line":"            meter \u003d meter[0]"},{"line_number":73,"context_line":"            meter_band \u003d self.ovn_nb.lookup(\u0027Meter_Band\u0027, meter.bands[0].uuid)"},{"line_number":74,"context_line":"            if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":75,"context_line":"                    meter.fair[0] is True,"},{"line_number":76,"context_line":"                    meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"}],"source_content_type":"text/x-python","patch_set":16,"id":"34461177_5669bb46","line":73,"in_reply_to":"0ee67ac7_3c60e2d5","updated":"2021-02-05 16:43:55.000000000","message":"Good point. I think we should!","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            \u0027Meter\u0027, (\u0027name\u0027, \u0027\u003d\u0027, self.meter_name)).execute(check_error\u003dTrue)"},{"line_number":71,"context_line":"        if meter:"},{"line_number":72,"context_line":"            meter \u003d meter[0]"},{"line_number":73,"context_line":"            meter_band \u003d self.ovn_nb.lookup(\u0027Meter_Band\u0027, meter.bands[0].uuid)"},{"line_number":74,"context_line":"            if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":75,"context_line":"                    meter.fair[0] is True,"},{"line_number":76,"context_line":"                    meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"}],"source_content_type":"text/x-python","patch_set":16,"id":"d9492a06_097e32dc","line":73,"in_reply_to":"34461177_5669bb46","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            # Re-create meter (and its meter-band) with the required attributes"},{"line_number":81,"context_line":"            self.ovn_nb.meter_del(meter.uuid).execute(check_error\u003dTrue)"},{"line_number":82,"context_line":"        # Create meter"},{"line_number":83,"context_line":"        LOG.debug(\u0027Creating network log fair meter {}\u0027.format(self.meter_name))"},{"line_number":84,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":85,"context_line":"            ovn_txn.add(self.ovn_nb.meter_add("},{"line_number":86,"context_line":"                name\u003dself.meter_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"b2752791_a8aa4801","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":79},"updated":"2021-02-05 12:00:30.000000000","message":"For logs we need to delay the string interpolation: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#adding-variables-to-log-messages","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            # Re-create meter (and its meter-band) with the required attributes"},{"line_number":81,"context_line":"            self.ovn_nb.meter_del(meter.uuid).execute(check_error\u003dTrue)"},{"line_number":82,"context_line":"        # Create meter"},{"line_number":83,"context_line":"        LOG.debug(\u0027Creating network log fair meter {}\u0027.format(self.meter_name))"},{"line_number":84,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":85,"context_line":"            ovn_txn.add(self.ovn_nb.meter_add("},{"line_number":86,"context_line":"                name\u003dself.meter_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"de70bd76_7d3126b3","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":79},"in_reply_to":"6e1a7aac_42fda232","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            # Re-create meter (and its meter-band) with the required attributes"},{"line_number":81,"context_line":"            self.ovn_nb.meter_del(meter.uuid).execute(check_error\u003dTrue)"},{"line_number":82,"context_line":"        # Create meter"},{"line_number":83,"context_line":"        LOG.debug(\u0027Creating network log fair meter {}\u0027.format(self.meter_name))"},{"line_number":84,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":85,"context_line":"            ovn_txn.add(self.ovn_nb.meter_add("},{"line_number":86,"context_line":"                name\u003dself.meter_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"6e1a7aac_42fda232","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":79},"in_reply_to":"b2752791_a8aa4801","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":89,"context_line":"                fair\u003dTrue,"},{"line_number":90,"context_line":"                burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":91,"context_line":"                may_exist\u003dFalse,"},{"line_number":92,"context_line":"                external_ids\u003d{\"owner\": \"neutron_network_log\"}))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @staticmethod"},{"line_number":95,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":16,"id":"f62d7839_e5b799c9","line":92,"range":{"start_line":92,"start_character":30,"end_line":92,"end_character":37},"updated":"2021-02-05 12:00:30.000000000","message":"Let\u0027s follow the external ids pattern that we use in across Neutron: https://github.com/openstack/neutron/blob/09078a9d695ea93f9322ee15fcaf6f15d566c30b/neutron/common/ovn/constants.py#L19-L48","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":true,"context_lines":[{"line_number":89,"context_line":"                fair\u003dTrue,"},{"line_number":90,"context_line":"                burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":91,"context_line":"                may_exist\u003dFalse,"},{"line_number":92,"context_line":"                external_ids\u003d{\"owner\": \"neutron_network_log\"}))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @staticmethod"},{"line_number":95,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":16,"id":"09b4d1c1_38462091","line":92,"range":{"start_line":92,"start_character":30,"end_line":92,"end_character":37},"in_reply_to":"ad391b31_92468667","updated":"2021-02-05 23:34:04.000000000","message":"Hm.... can you confirm if this what what this should look like:\n\nexternal_ids        : {\"neutron:device_owner\"\u003d\"neutron:network_log\"}\n\nI may have not quite understood what we should do here.","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":89,"context_line":"                fair\u003dTrue,"},{"line_number":90,"context_line":"                burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":91,"context_line":"                may_exist\u003dFalse,"},{"line_number":92,"context_line":"                external_ids\u003d{\"owner\": \"neutron_network_log\"}))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @staticmethod"},{"line_number":95,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ad391b31_92468667","line":92,"range":{"start_line":92,"start_character":30,"end_line":92,"end_character":37},"in_reply_to":"f62d7839_e5b799c9","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":111,"context_line":"        acl_skip_msgs \u003d 0"},{"line_number":112,"context_line":"        for pg in pgs:"},{"line_number":113,"context_line":"            for acl_uuid in pg[\u0027acls\u0027]:"},{"line_number":114,"context_line":"                acl \u003d self.ovn_nb.lookup(\"ACL\", acl_uuid)"},{"line_number":115,"context_line":"                # skip if acl is used by a different network log"},{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"}],"source_content_type":"text/x-python","patch_set":16,"id":"f357f793_d2984242","line":114,"range":{"start_line":114,"start_character":16,"end_line":114,"end_character":57},"updated":"2021-02-05 12:00:30.000000000","message":"We can skip these database lookups if log_name is None","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        acl_skip_msgs \u003d 0"},{"line_number":112,"context_line":"        for pg in pgs:"},{"line_number":113,"context_line":"            for acl_uuid in pg[\u0027acls\u0027]:"},{"line_number":114,"context_line":"                acl \u003d self.ovn_nb.lookup(\"ACL\", acl_uuid)"},{"line_number":115,"context_line":"                # skip if acl is used by a different network log"},{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"}],"source_content_type":"text/x-python","patch_set":16,"id":"c2842280_8270b597","line":114,"range":{"start_line":114,"start_character":16,"end_line":114,"end_character":57},"in_reply_to":"59e8855a_59b4d476","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":111,"context_line":"        acl_skip_msgs \u003d 0"},{"line_number":112,"context_line":"        for pg in pgs:"},{"line_number":113,"context_line":"            for acl_uuid in pg[\u0027acls\u0027]:"},{"line_number":114,"context_line":"                acl \u003d self.ovn_nb.lookup(\"ACL\", acl_uuid)"},{"line_number":115,"context_line":"                # skip if acl is used by a different network log"},{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"}],"source_content_type":"text/x-python","patch_set":16,"id":"59e8855a_59b4d476","line":114,"range":{"start_line":114,"start_character":16,"end_line":114,"end_character":57},"in_reply_to":"f357f793_d2984242","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"5f247f43_edb4ebeb","line":119,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"e52be6f8_7dd8f017","line":119,"in_reply_to":"0b54cb9d_c90d0272","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":116,"context_line":"                if acl.name and log_name and acl.name[0] !\u003d log_name:"},{"line_number":117,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"0b54cb9d_c90d0272","line":119,"in_reply_to":"5f247f43_edb4ebeb","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7945ae5e98fd8353f2c8b1ca4ff13988db2fa296","unresolved":true,"context_lines":[{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("},{"line_number":123,"context_line":"                    \"ACL\", acl_uuid,"},{"line_number":124,"context_line":"                    (\"log\", False),"}],"source_content_type":"text/x-python","patch_set":16,"id":"6d374c84_e0b571bc","line":121,"updated":"2021-02-05 12:09:50.000000000","message":"Can you explain the logic behind this for statment here ? Why do we have a \"max ACL skip\"?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("},{"line_number":123,"context_line":"                    \"ACL\", acl_uuid,"},{"line_number":124,"context_line":"                    (\"log\", False),"}],"source_content_type":"text/x-python","patch_set":16,"id":"e4323b6b_1b736949","line":121,"in_reply_to":"306d6034_e72113c2","updated":"2021-02-05 16:43:55.000000000","message":"That is right. There is a \"pathological case\" where one \"openstack network log entry\" (ONLE) turns on logs for all the SGRs. If you look at doc in https://docs.openstack.org/neutron/victoria/admin/config-logging.html you can see a red rectangle warning bar with more info on that.\n\nSo, this particular \"poorman\u0027s throttle\" is here to account for cases when user creates 2 or more ONLE that iterate through all the ACLs. For regular usage, this should not happen, while it is nice to have logs when it does.\n\nLet me add some comment on that. The skip is just for the logging, not the actual ACL rows. Let me clarify it.","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"7f5d69a76d0430e2ad56717b19c795732e3ba61d","unresolved":true,"context_lines":[{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("},{"line_number":123,"context_line":"                    \"ACL\", acl_uuid,"},{"line_number":124,"context_line":"                    (\"log\", False),"}],"source_content_type":"text/x-python","patch_set":16,"id":"306d6034_e72113c2","line":121,"in_reply_to":"6d374c84_e0b571bc","updated":"2021-02-05 12:59:39.000000000","message":"Seems like a throttle to avoid flooding logs with too many of those. Is this for example happening in the case that many SGRs are removed? that won\u0027t happen in batch right?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                        LOG.debug(\"Skip log rm acl {}: {} logged by {}\".format("},{"line_number":119,"context_line":"                            acl_uuid, log_name, acl.name[0]))"},{"line_number":120,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":121,"context_line":"                    continue"},{"line_number":122,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("},{"line_number":123,"context_line":"                    \"ACL\", acl_uuid,"},{"line_number":124,"context_line":"                    (\"log\", False),"}],"source_content_type":"text/x-python","patch_set":16,"id":"166ba071_66c3a82f","line":121,"in_reply_to":"e4323b6b_1b736949","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":138,"context_line":"                        LOG.debug("},{"line_number":139,"context_line":"                            \"Skip log set acl {}: {} logged by {}\".format("},{"line_number":140,"context_line":"                                acl_uuid, log_name, acl.name[0]))"},{"line_number":141,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":142,"context_line":"                    continue"},{"line_number":143,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"8edb006a_25681a13","line":140,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":138,"context_line":"                        LOG.debug("},{"line_number":139,"context_line":"                            \"Skip log set acl {}: {} logged by {}\".format("},{"line_number":140,"context_line":"                                acl_uuid, log_name, acl.name[0]))"},{"line_number":141,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":142,"context_line":"                    continue"},{"line_number":143,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"47e51787_0a6e24ed","line":140,"in_reply_to":"15a5ce6e_e321d97d","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                    if acl_skip_msgs \u003c MAX_ACL_SKIPS_MSGS:"},{"line_number":138,"context_line":"                        LOG.debug("},{"line_number":139,"context_line":"                            \"Skip log set acl {}: {} logged by {}\".format("},{"line_number":140,"context_line":"                                acl_uuid, log_name, acl.name[0]))"},{"line_number":141,"context_line":"                    acl_skip_msgs +\u003d 1"},{"line_number":142,"context_line":"                    continue"},{"line_number":143,"context_line":"                ovn_txn.add(self.ovn_nb.db_set("}],"source_content_type":"text/x-python","patch_set":16,"id":"15a5ce6e_e321d97d","line":140,"in_reply_to":"8edb006a_25681a13","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def _pgs_all(self):"},{"line_number":160,"context_line":"        return self.ovn_nb.db_list("},{"line_number":161,"context_line":"            \u0027Port_Group\u0027, columns\u003d[\u0027_uuid\u0027, \u0027acls\u0027]).execute(check_error\u003dTrue)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _pgs_from_log_obj(self, context, log_obj):"},{"line_number":164,"context_line":"        if not log_obj.resource_id and not log_obj.target_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1874a1e1_dcd7c73b","line":161,"range":{"start_line":161,"start_character":36,"end_line":161,"end_character":41},"updated":"2021-02-05 12:00:30.000000000","message":"Can we use the PG \"name\" here since it\u0027s an indexed field: https://github.com/ovn-org/ovn/blob/a99af0367acc744321747bad33bf598d06a612de/ovn-nb.ovsschema#L164","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def _pgs_all(self):"},{"line_number":160,"context_line":"        return self.ovn_nb.db_list("},{"line_number":161,"context_line":"            \u0027Port_Group\u0027, columns\u003d[\u0027_uuid\u0027, \u0027acls\u0027]).execute(check_error\u003dTrue)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _pgs_from_log_obj(self, context, log_obj):"},{"line_number":164,"context_line":"        if not log_obj.resource_id and not log_obj.target_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"29cdc0f4_f820f1f1","line":161,"range":{"start_line":161,"start_character":36,"end_line":161,"end_character":41},"in_reply_to":"1874a1e1_dcd7c73b","updated":"2021-02-05 16:43:55.000000000","message":"ah, I think so. will do!","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def _pgs_all(self):"},{"line_number":160,"context_line":"        return self.ovn_nb.db_list("},{"line_number":161,"context_line":"            \u0027Port_Group\u0027, columns\u003d[\u0027_uuid\u0027, \u0027acls\u0027]).execute(check_error\u003dTrue)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _pgs_from_log_obj(self, context, log_obj):"},{"line_number":164,"context_line":"        if not log_obj.resource_id and not log_obj.target_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"99d80bba_7b54377e","line":161,"range":{"start_line":161,"start_character":36,"end_line":161,"end_character":41},"in_reply_to":"29cdc0f4_f820f1f1","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":170,"context_line":"        if not log_obj.event or log_obj.event in (log_const.DROP_EVENT,"},{"line_number":171,"context_line":"                                                  log_const.ALL_EVENT):"},{"line_number":172,"context_line":"            pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":173,"context_line":"                                    ovn_const.OVN_DROP_PORT_GROUP_NAME)"},{"line_number":174,"context_line":"            pgs.append({\u0027_uuid\u0027: pg.uuid, \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        if log_obj.resource_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f85fe4c_b1ea56be","line":173,"updated":"2021-02-05 12:00:30.000000000","message":"This could raise a RowNotFound, should we handle it ?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if not log_obj.event or log_obj.event in (log_const.DROP_EVENT,"},{"line_number":171,"context_line":"                                                  log_const.ALL_EVENT):"},{"line_number":172,"context_line":"            pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":173,"context_line":"                                    ovn_const.OVN_DROP_PORT_GROUP_NAME)"},{"line_number":174,"context_line":"            pgs.append({\u0027_uuid\u0027: pg.uuid, \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        if log_obj.resource_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"bbae5f04_cae44fda","line":173,"in_reply_to":"6c198453_926c5e3e","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":170,"context_line":"        if not log_obj.event or log_obj.event in (log_const.DROP_EVENT,"},{"line_number":171,"context_line":"                                                  log_const.ALL_EVENT):"},{"line_number":172,"context_line":"            pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":173,"context_line":"                                    ovn_const.OVN_DROP_PORT_GROUP_NAME)"},{"line_number":174,"context_line":"            pgs.append({\u0027_uuid\u0027: pg.uuid, \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        if log_obj.resource_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"6c198453_926c5e3e","line":173,"in_reply_to":"7f85fe4c_b1ea56be","updated":"2021-02-05 16:43:55.000000000","message":"ack. it should not hurt to handle it","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                                                      log_obj.target_id)"},{"line_number":185,"context_line":"            for sg_id in sg_ids:"},{"line_number":186,"context_line":"                pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":187,"context_line":"                                        utils.ovn_port_group_name(sg_id))"},{"line_number":188,"context_line":"                pgs.append({\u0027_uuid\u0027: pg.uuid,"},{"line_number":189,"context_line":"                            \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":190,"context_line":"        return pgs"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f255e12_e5a3e3ea","line":187,"updated":"2021-02-05 12:00:30.000000000","message":"ditto RowNotFound, should we handle it ?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                                      log_obj.target_id)"},{"line_number":185,"context_line":"            for sg_id in sg_ids:"},{"line_number":186,"context_line":"                pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":187,"context_line":"                                        utils.ovn_port_group_name(sg_id))"},{"line_number":188,"context_line":"                pgs.append({\u0027_uuid\u0027: pg.uuid,"},{"line_number":189,"context_line":"                            \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":190,"context_line":"        return pgs"}],"source_content_type":"text/x-python","patch_set":16,"id":"21f40348_7d23f55b","line":187,"in_reply_to":"4b1ff078_e3fbf73c","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                                                      log_obj.target_id)"},{"line_number":185,"context_line":"            for sg_id in sg_ids:"},{"line_number":186,"context_line":"                pg \u003d self.ovn_nb.lookup(\u0027Port_Group\u0027,"},{"line_number":187,"context_line":"                                        utils.ovn_port_group_name(sg_id))"},{"line_number":188,"context_line":"                pgs.append({\u0027_uuid\u0027: pg.uuid,"},{"line_number":189,"context_line":"                            \u0027acls\u0027: [r.uuid for r in pg.acls]})"},{"line_number":190,"context_line":"        return pgs"}],"source_content_type":"text/x-python","patch_set":16,"id":"4b1ff078_e3fbf73c","line":187,"in_reply_to":"9f255e12_e5a3e3ea","updated":"2021-02-05 16:43:55.000000000","message":"ack. it should not hurt to handle it","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":198,"context_line":"        :param context: current running context information"},{"line_number":199,"context_line":"        :param log_obj: a log objects being created"},{"line_number":200,"context_line":"        \"\"\""},{"line_number":201,"context_line":"        LOG.debug(\"Create_log {}\".format(log_obj))"},{"line_number":202,"context_line":"        self._create_ovn_fair_meter()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ca7b6adb_179fb9c1","line":201,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":198,"context_line":"        :param context: current running context information"},{"line_number":199,"context_line":"        :param log_obj: a log objects being created"},{"line_number":200,"context_line":"        \"\"\""},{"line_number":201,"context_line":"        LOG.debug(\"Create_log {}\".format(log_obj))"},{"line_number":202,"context_line":"        self._create_ovn_fair_meter()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ea857078_db6c94d4","line":201,"in_reply_to":"ca7b6adb_179fb9c1","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        :param context: current running context information"},{"line_number":199,"context_line":"        :param log_obj: a log objects being created"},{"line_number":200,"context_line":"        \"\"\""},{"line_number":201,"context_line":"        LOG.debug(\"Create_log {}\".format(log_obj))"},{"line_number":202,"context_line":"        self._create_ovn_fair_meter()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"c1f426c7_ed83d875","line":201,"in_reply_to":"ea857078_db6c94d4","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        :param context: current running context information"},{"line_number":217,"context_line":"        :param log_obj: a log object being created"},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"Create_log_precommit {}\".format(log_obj))"},{"line_number":220,"context_line":"        if not network_logging_supported(self.ovn_nb):"},{"line_number":221,"context_line":"            raise LoggingNotSupported()"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"d86a88ca_6759c000","line":219,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        :param context: current running context information"},{"line_number":217,"context_line":"        :param log_obj: a log object being created"},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"Create_log_precommit {}\".format(log_obj))"},{"line_number":220,"context_line":"        if not network_logging_supported(self.ovn_nb):"},{"line_number":221,"context_line":"            raise LoggingNotSupported()"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"95999e0f_9e2613cf","line":219,"in_reply_to":"017f25cc_1245a679","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        :param context: current running context information"},{"line_number":217,"context_line":"        :param log_obj: a log object being created"},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"Create_log_precommit {}\".format(log_obj))"},{"line_number":220,"context_line":"        if not network_logging_supported(self.ovn_nb):"},{"line_number":221,"context_line":"            raise LoggingNotSupported()"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"017f25cc_1245a679","line":219,"in_reply_to":"d86a88ca_6759c000","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":230,"context_line":"        :param log_obj: a log object being updated"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        LOG.debug(\"Update_log {}\".format(log_obj))"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"},{"line_number":236,"context_line":"        actions_enabled \u003d self._acl_actions_enabled(log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"b48cd7c2_84da9c6e","line":233,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        :param log_obj: a log object being updated"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        LOG.debug(\"Update_log {}\".format(log_obj))"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"},{"line_number":236,"context_line":"        actions_enabled \u003d self._acl_actions_enabled(log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"061fb00f_da861e2f","line":233,"in_reply_to":"a6e2bb35_b56fe5ce","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":230,"context_line":"        :param log_obj: a log object being updated"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        LOG.debug(\"Update_log {}\".format(log_obj))"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        pgs \u003d self._pgs_from_log_obj(context, log_obj)"},{"line_number":236,"context_line":"        actions_enabled \u003d self._acl_actions_enabled(log_obj)"}],"source_content_type":"text/x-python","patch_set":16,"id":"a6e2bb35_b56fe5ce","line":233,"in_reply_to":"b48cd7c2_84da9c6e","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        :param log_obj: a log_object being deleted"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        LOG.debug(\"Delete_log {}\".format(log_obj))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        log_objs \u003d logging_plugin.get_logs(context)"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5110f62b_006c0739","line":251,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        :param log_obj: a log_object being deleted"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        LOG.debug(\"Delete_log {}\".format(log_obj))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        log_objs \u003d logging_plugin.get_logs(context)"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"68b76712_05a8fbb1","line":251,"in_reply_to":"5110f62b_006c0739","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        :param log_obj: a log_object being deleted"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        LOG.debug(\"Delete_log {}\".format(log_obj))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        log_objs \u003d logging_plugin.get_logs(context)"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9b92316d_fbf5538a","line":251,"in_reply_to":"68b76712_05a8fbb1","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":259,"context_line":"            pgs \u003d self._pgs_all()"},{"line_number":260,"context_line":"            with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":261,"context_line":"                self._remove_acls_log(pgs, ovn_txn)"},{"line_number":262,"context_line":"            LOG.debug(\"All ACL logs have been cleared\")"},{"line_number":263,"context_line":"            return"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # Remove log_obj and revisit all remaining ones, since the acls that"}],"source_content_type":"text/x-python","patch_set":16,"id":"5cc668ca_2c46e091","line":262,"range":{"start_line":262,"start_character":16,"end_line":262,"end_character":21},"updated":"2021-02-05 12:00:30.000000000","message":"Let\u0027s log the Log object ID here and maybe set the level to INFO ?","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            pgs \u003d self._pgs_all()"},{"line_number":260,"context_line":"            with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":261,"context_line":"                self._remove_acls_log(pgs, ovn_txn)"},{"line_number":262,"context_line":"            LOG.debug(\"All ACL logs have been cleared\")"},{"line_number":263,"context_line":"            return"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # Remove log_obj and revisit all remaining ones, since the acls that"}],"source_content_type":"text/x-python","patch_set":16,"id":"e5d024dd_a394b024","line":262,"range":{"start_line":262,"start_character":16,"end_line":262,"end_character":21},"in_reply_to":"3ad50a0c_6e27b2d9","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":259,"context_line":"            pgs \u003d self._pgs_all()"},{"line_number":260,"context_line":"            with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":261,"context_line":"                self._remove_acls_log(pgs, ovn_txn)"},{"line_number":262,"context_line":"            LOG.debug(\"All ACL logs have been cleared\")"},{"line_number":263,"context_line":"            return"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # Remove log_obj and revisit all remaining ones, since the acls that"}],"source_content_type":"text/x-python","patch_set":16,"id":"3ad50a0c_6e27b2d9","line":262,"range":{"start_line":262,"start_character":16,"end_line":262,"end_character":21},"in_reply_to":"5cc668ca_2c46e091","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        :param log_objs: a list of log_objects, whose related resources are"},{"line_number":280,"context_line":"                         being updated."},{"line_number":281,"context_line":"        \"\"\""},{"line_number":282,"context_line":"        LOG.debug(\"Resource_update {}\".format(log_objs))"},{"line_number":283,"context_line":"        self._update_log_objs(context, log_objs)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"4abb8d48_94fafbc9","line":282,"updated":"2021-02-05 12:00:30.000000000","message":"ditto delay str interpolation","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        :param log_objs: a list of log_objects, whose related resources are"},{"line_number":280,"context_line":"                         being updated."},{"line_number":281,"context_line":"        \"\"\""},{"line_number":282,"context_line":"        LOG.debug(\"Resource_update {}\".format(log_objs))"},{"line_number":283,"context_line":"        self._update_log_objs(context, log_objs)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"af121975_43b8f213","line":282,"in_reply_to":"4abb8d48_94fafbc9","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        :param log_objs: a list of log_objects, whose related resources are"},{"line_number":280,"context_line":"                         being updated."},{"line_number":281,"context_line":"        \"\"\""},{"line_number":282,"context_line":"        LOG.debug(\"Resource_update {}\".format(log_objs))"},{"line_number":283,"context_line":"        self._update_log_objs(context, log_objs)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"e9f032fb_36259bc9","line":282,"in_reply_to":"af121975_43b8f213","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2f294da0973c18b845526503f7a5465bc50c3406","unresolved":true,"context_lines":[{"line_number":297,"context_line":"    manager.register("},{"line_number":298,"context_line":"        resources.SECURITY_GROUP_RULE, sg_callback.SecurityGroupRuleCallBack)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    LOG.debug(\u0027OVN logging driver registered\u0027)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"def network_logging_supported(ovn_nb):"}],"source_content_type":"text/x-python","patch_set":16,"id":"f0474736_8992ee49","line":300,"range":{"start_line":300,"start_character":8,"end_line":300,"end_character":13},"updated":"2021-02-05 12:00:30.000000000","message":"This should be INFO","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"eed29e6122613afefd739f263ce9427fc659859c","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    manager.register("},{"line_number":298,"context_line":"        resources.SECURITY_GROUP_RULE, sg_callback.SecurityGroupRuleCallBack)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    LOG.debug(\u0027OVN logging driver registered\u0027)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"def network_logging_supported(ovn_nb):"}],"source_content_type":"text/x-python","patch_set":16,"id":"6ba3363b_62e9215b","line":300,"range":{"start_line":300,"start_character":8,"end_line":300,"end_character":13},"in_reply_to":"0fe8304f_09d6d492","updated":"2021-02-05 23:34:04.000000000","message":"Done","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"b01aeae477aa354f1ccd1036d7736a67db20303d","unresolved":true,"context_lines":[{"line_number":297,"context_line":"    manager.register("},{"line_number":298,"context_line":"        resources.SECURITY_GROUP_RULE, sg_callback.SecurityGroupRuleCallBack)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    LOG.debug(\u0027OVN logging driver registered\u0027)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"def network_logging_supported(ovn_nb):"}],"source_content_type":"text/x-python","patch_set":16,"id":"0fe8304f_09d6d492","line":300,"range":{"start_line":300,"start_character":8,"end_line":300,"end_character":13},"in_reply_to":"f0474736_8992ee49","updated":"2021-02-05 16:43:55.000000000","message":"Ack","commit_id":"1608d72fbd84675defa5279572007b48fac39af4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f9822b9a4351d0f6f6629c58867b891f144bf9d","unresolved":true,"context_lines":[{"line_number":99,"context_line":"            except idlutils.RowNotFound:"},{"line_number":100,"context_line":"                pass"},{"line_number":101,"context_line":"            # Re-create meter (and its meter-band) with the required attributes"},{"line_number":102,"context_line":"            self.ovn_nb.meter_del(meter.uuid).execute(check_error\u003dTrue)"},{"line_number":103,"context_line":"        # Create meter"},{"line_number":104,"context_line":"        LOG.debug(\"Creating network log fair meter %s\", self.meter_name)"},{"line_number":105,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"}],"source_content_type":"text/x-python","patch_set":20,"id":"2964b8e6_234128b6","line":102,"updated":"2021-02-08 14:01:02.000000000","message":"Quick q: Is it not possible to update an existing entry instead of having to delete and create it again ?\n\nAlso some docstring explain what the method is suppose to do would be good here I think","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"974580a9ecd17b6945bce4e4f994a77e1f805e2d","unresolved":true,"context_lines":[{"line_number":99,"context_line":"            except idlutils.RowNotFound:"},{"line_number":100,"context_line":"                pass"},{"line_number":101,"context_line":"            # Re-create meter (and its meter-band) with the required attributes"},{"line_number":102,"context_line":"            self.ovn_nb.meter_del(meter.uuid).execute(check_error\u003dTrue)"},{"line_number":103,"context_line":"        # Create meter"},{"line_number":104,"context_line":"        LOG.debug(\"Creating network log fair meter %s\", self.meter_name)"},{"line_number":105,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"}],"source_content_type":"text/x-python","patch_set":20,"id":"13bac890_af0b0446","line":102,"in_reply_to":"2964b8e6_234128b6","updated":"2021-02-08 20:07:54.000000000","message":"To update the meter instead of simply deleting it would be a bit of a pita.\nThat is so, because I would have to duplicate de code below. Also, I would have\nto deal with 2 tables (meter and meter-band) where one refers to the other. That\ncomplexity is hidden by ovsdbapp code [1], and I would like to keep it that way. :^)\n[1]: https://github.com/openstack/ovsdbapp/blob/aac2da8f0cb5adc006613e49d8d4fcf08531ef37/ovsdbapp/schema/ovn_northbound/commands.py#L1522-L1535\n\nWill add docstring.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f9822b9a4351d0f6f6629c58867b891f144bf9d","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if not network_logging_supported(self.ovn_nb):"},{"line_number":251,"context_line":"            raise LoggingNotSupported()"},{"line_number":252,"context_line":"        self._create_ovn_fair_meter()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def update_log(self, context, log_obj):"},{"line_number":255,"context_line":"        \"\"\"Update a log_obj invocation."}],"source_content_type":"text/x-python","patch_set":20,"id":"fbb600f2_41a0a3d9","line":252,"updated":"2021-02-08 14:01:02.000000000","message":"This looks out of place, not sure we want to create things in the OVN DB at precommit.\n\nThis could lead to database inconsistencies if Neutron later fails to commit the change to mysql.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"974580a9ecd17b6945bce4e4f994a77e1f805e2d","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if not network_logging_supported(self.ovn_nb):"},{"line_number":251,"context_line":"            raise LoggingNotSupported()"},{"line_number":252,"context_line":"        self._create_ovn_fair_meter()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def update_log(self, context, log_obj):"},{"line_number":255,"context_line":"        \"\"\"Update a log_obj invocation."}],"source_content_type":"text/x-python","patch_set":20,"id":"33fac6f7_b51d2532","line":252,"in_reply_to":"fbb600f2_41a0a3d9","updated":"2021-02-08 20:07:54.000000000","message":"Yes, very good point! I\u0027ll move this to create_log() and use ovn_txn from caller.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f9822b9a4351d0f6f6629c58867b891f144bf9d","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":297,"context_line":"            self._remove_acls_log(pgs, ovn_txn, utils.ovn_name(log_obj.id))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        self._update_log_objs(context, [lo for lo in log_objs"},{"line_number":300,"context_line":"                                        if lo.id !\u003d log_obj.id])"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def resource_update(self, context, log_objs):"}],"source_content_type":"text/x-python","patch_set":20,"id":"aaa92b04_c92381b2","line":299,"range":{"start_line":299,"start_character":13,"end_line":299,"end_character":29},"updated":"2021-02-08 14:01:02.000000000","message":"Would be possible to also pass the ovn_txn object to this method so that everything happens in a single transaction instead of two ?\n\nThat way we can minimize the risk of getting an inconsistent database if the first transaction succeeds but the second fails","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"974580a9ecd17b6945bce4e4f994a77e1f805e2d","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":297,"context_line":"            self._remove_acls_log(pgs, ovn_txn, utils.ovn_name(log_obj.id))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        self._update_log_objs(context, [lo for lo in log_objs"},{"line_number":300,"context_line":"                                        if lo.id !\u003d log_obj.id])"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def resource_update(self, context, log_objs):"}],"source_content_type":"text/x-python","patch_set":20,"id":"c57db5e5_59d85636","line":299,"range":{"start_line":299,"start_character":13,"end_line":299,"end_character":29},"in_reply_to":"aaa92b04_c92381b2","updated":"2021-02-08 20:07:54.000000000","message":"Absolutely! TY for pointing this out.","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fd523c871222035dabf5330d82a2878d2b26adb","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        return self._log_plugin_property"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @staticmethod"},{"line_number":76,"context_line":"    def _Log_dict_to_obj(log_dict):"},{"line_number":77,"context_line":"        cls \u003d namedtuple(\u0027Log_obj\u0027, log_dict)"},{"line_number":78,"context_line":"        cls.__new__.__defaults__ \u003d tuple(log_dict.values())"},{"line_number":79,"context_line":"        return cls()"}],"source_content_type":"text/x-python","patch_set":28,"id":"072ac471_ee142a7e","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":10},"updated":"2021-02-10 16:46:04.000000000","message":"nit: just strange to have a capitalized method when every other method in the code base is lowercase","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bb4ae5ebda5fefe6ae7e415b5e472a8e2ff5dbc2","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        return self._log_plugin_property"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @staticmethod"},{"line_number":76,"context_line":"    def _Log_dict_to_obj(log_dict):"},{"line_number":77,"context_line":"        cls \u003d namedtuple(\u0027Log_obj\u0027, log_dict)"},{"line_number":78,"context_line":"        cls.__new__.__defaults__ \u003d tuple(log_dict.values())"},{"line_number":79,"context_line":"        return cls()"}],"source_content_type":"text/x-python","patch_set":28,"id":"777cbc03_b0a52222","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":10},"in_reply_to":"072ac471_ee142a7e","updated":"2021-02-11 11:19:41.000000000","message":"valid point. I will tweak this when I fold in the tests from the other gerrit.","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fd523c871222035dabf5330d82a2878d2b26adb","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :param ovn_txn: ovn nortbound idl transaction."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        meter \u003d self.ovn_nb.db_find_rows("},{"line_number":99,"context_line":"            \"Meter\", (\"name\", \"\u003d\", self.meter_name)).execute(check_error\u003dTrue)"},{"line_number":100,"context_line":"        if meter:"}],"source_content_type":"text/x-python","patch_set":28,"id":"74313cb7_9ab7e094","line":97,"updated":"2021-02-10 16:46:04.000000000","message":"nit: \n\nI know it\u0027s just an internal method and the docstring is great. But we should follow pep 257 where possible and have a summary line followed by a more elaborate description.\n\nhttps://www.python.org/dev/peps/pep-0257/#multi-line-docstrings","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bb4ae5ebda5fefe6ae7e415b5e472a8e2ff5dbc2","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :param ovn_txn: ovn nortbound idl transaction."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        meter \u003d self.ovn_nb.db_find_rows("},{"line_number":99,"context_line":"            \"Meter\", (\"name\", \"\u003d\", self.meter_name)).execute(check_error\u003dTrue)"},{"line_number":100,"context_line":"        if meter:"}],"source_content_type":"text/x-python","patch_set":28,"id":"5f2a9e09_4485f5d9","line":97,"in_reply_to":"74313cb7_9ab7e094","updated":"2021-02-11 11:19:41.000000000","message":"Thanks for the link. Ack, will do.","commit_id":"5b69930792cfb39143e672cda97bea077f69abc0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"43b038ad8d9b3642758e503f19bf1943a45fc269","unresolved":true,"context_lines":[{"line_number":13,"context_line":"from collections import namedtuple"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron._i18n import _"},{"line_number":16,"context_line":"from neutron.conf.services import logging as log_cfg"},{"line_number":17,"context_line":"from neutron_lib.api.definitions import portbindings"},{"line_number":18,"context_line":"from neutron_lib.callbacks import resources"},{"line_number":19,"context_line":"from neutron_lib import exceptions as n_exceptions"}],"source_content_type":"text/x-python","patch_set":32,"id":"54070b0a_98ae3e58","line":16,"updated":"2021-02-15 15:58:06.000000000","message":"please fix imports, those 2 lines should be in section 3 with other \"neutron\" imports","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8ec51d42c20d2aa025e39e48899981449e1c9ad1","unresolved":true,"context_lines":[{"line_number":13,"context_line":"from collections import namedtuple"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron._i18n import _"},{"line_number":16,"context_line":"from neutron.conf.services import logging as log_cfg"},{"line_number":17,"context_line":"from neutron_lib.api.definitions import portbindings"},{"line_number":18,"context_line":"from neutron_lib.callbacks import resources"},{"line_number":19,"context_line":"from neutron_lib import exceptions as n_exceptions"}],"source_content_type":"text/x-python","patch_set":32,"id":"d18a35de_b433c498","line":16,"in_reply_to":"54070b0a_98ae3e58","updated":"2021-02-23 11:31:23.000000000","message":"Ack","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8974fc57245b5a31863d8cd282bc40258847b810","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from collections import namedtuple"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron._i18n import _"},{"line_number":16,"context_line":"from neutron.conf.services import logging as log_cfg"},{"line_number":17,"context_line":"from neutron_lib.api.definitions import portbindings"},{"line_number":18,"context_line":"from neutron_lib.callbacks import resources"},{"line_number":19,"context_line":"from neutron_lib import exceptions as n_exceptions"}],"source_content_type":"text/x-python","patch_set":32,"id":"d88d3fed_5ccf8682","line":16,"in_reply_to":"d18a35de_b433c498","updated":"2021-02-23 21:26:14.000000000","message":"Done","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2e0dea74cb9e57c652c202d7238aeac84354254f","unresolved":true,"context_lines":[{"line_number":128,"context_line":"            burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":129,"context_line":"            may_exist\u003dFalse,"},{"line_number":130,"context_line":"            external_ids\u003d{ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY:"},{"line_number":131,"context_line":"                          \"neutron:network_log\"}))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":32,"id":"93d87e0c_ff761a8a","line":131,"range":{"start_line":131,"start_character":27,"end_line":131,"end_character":46},"updated":"2021-02-12 10:32:34.000000000","message":"nit: maybe this should be a constant too","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8974fc57245b5a31863d8cd282bc40258847b810","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":129,"context_line":"            may_exist\u003dFalse,"},{"line_number":130,"context_line":"            external_ids\u003d{ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY:"},{"line_number":131,"context_line":"                          \"neutron:network_log\"}))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":32,"id":"57b36399_104364e6","line":131,"range":{"start_line":131,"start_character":27,"end_line":131,"end_character":46},"in_reply_to":"4cc019b8_bf52d4ce","updated":"2021-02-23 21:26:14.000000000","message":"Done","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8ec51d42c20d2aa025e39e48899981449e1c9ad1","unresolved":true,"context_lines":[{"line_number":128,"context_line":"            burst_size\u003dcfg.CONF.network_log.burst_limit,"},{"line_number":129,"context_line":"            may_exist\u003dFalse,"},{"line_number":130,"context_line":"            external_ids\u003d{ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY:"},{"line_number":131,"context_line":"                          \"neutron:network_log\"}))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @staticmethod"},{"line_number":134,"context_line":"    def _acl_actions_enabled(log_obj):"}],"source_content_type":"text/x-python","patch_set":32,"id":"4cc019b8_bf52d4ce","line":131,"range":{"start_line":131,"start_character":27,"end_line":131,"end_character":46},"in_reply_to":"93d87e0c_ff761a8a","updated":"2021-02-23 11:31:23.000000000","message":"Ack","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"43b038ad8d9b3642758e503f19bf1943a45fc269","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        msg \u003d \"Cleared %d (out of %d visited) ACLs\""},{"line_number":168,"context_line":"        if log_name:"},{"line_number":169,"context_line":"            msg +\u003d \" for network log {}\".format(log_name)"},{"line_number":170,"context_line":"        LOG.info(msg, acl_changes, acl_visits)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _set_acls_log(self, pgs, ovn_txn, actions_enabled, log_name):"},{"line_number":173,"context_line":"        acl_changes, acl_visits \u003d 0, 0"}],"source_content_type":"text/x-python","patch_set":32,"id":"48d1693d_83b42074","line":170,"range":{"start_line":170,"start_character":12,"end_line":170,"end_character":16},"updated":"2021-02-15 15:58:06.000000000","message":"do we need this to be INFO? Maybe DEBUG would be enough?","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bc0391c71d3e9060a6a1e9068071f91b2c6e4dfe","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        msg \u003d \"Cleared %d (out of %d visited) ACLs\""},{"line_number":168,"context_line":"        if log_name:"},{"line_number":169,"context_line":"            msg +\u003d \" for network log {}\".format(log_name)"},{"line_number":170,"context_line":"        LOG.info(msg, acl_changes, acl_visits)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _set_acls_log(self, pgs, ovn_txn, actions_enabled, log_name):"},{"line_number":173,"context_line":"        acl_changes, acl_visits \u003d 0, 0"}],"source_content_type":"text/x-python","patch_set":32,"id":"f683cf41_7de4cda2","line":170,"range":{"start_line":170,"start_character":12,"end_line":170,"end_character":16},"in_reply_to":"2d32c25a_7d04f9a6","updated":"2021-02-24 14:58:25.000000000","message":"ok, that\u0027s fine for me","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8ec51d42c20d2aa025e39e48899981449e1c9ad1","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        msg \u003d \"Cleared %d (out of %d visited) ACLs\""},{"line_number":168,"context_line":"        if log_name:"},{"line_number":169,"context_line":"            msg +\u003d \" for network log {}\".format(log_name)"},{"line_number":170,"context_line":"        LOG.info(msg, acl_changes, acl_visits)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _set_acls_log(self, pgs, ovn_txn, actions_enabled, log_name):"},{"line_number":173,"context_line":"        acl_changes, acl_visits \u003d 0, 0"}],"source_content_type":"text/x-python","patch_set":32,"id":"2d32c25a_7d04f9a6","line":170,"range":{"start_line":170,"start_character":12,"end_line":170,"end_character":16},"in_reply_to":"48d1693d_83b42074","updated":"2021-02-23 11:31:23.000000000","message":"This is low occurrence and gives good insight on the acls affected by the network logging feature for ml2 ovn. I would like to keep it as info, unless you think that is a really bad idea.","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"43b038ad8d9b3642758e503f19bf1943a45fc269","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                    (\"severity\", \"info\")"},{"line_number":187,"context_line":"                ))"},{"line_number":188,"context_line":"                acl_changes +\u003d 1"},{"line_number":189,"context_line":"        LOG.info(\"Set %d (out of %d visited) ACLs for network log %s\","},{"line_number":190,"context_line":"                 acl_changes, acl_visits, log_name)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _update_log_objs(self, context, ovn_txn, log_objs):"}],"source_content_type":"text/x-python","patch_set":32,"id":"4ecbd53a_78772bde","line":189,"updated":"2021-02-15 15:58:06.000000000","message":"same question here","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bc0391c71d3e9060a6a1e9068071f91b2c6e4dfe","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                    (\"severity\", \"info\")"},{"line_number":187,"context_line":"                ))"},{"line_number":188,"context_line":"                acl_changes +\u003d 1"},{"line_number":189,"context_line":"        LOG.info(\"Set %d (out of %d visited) ACLs for network log %s\","},{"line_number":190,"context_line":"                 acl_changes, acl_visits, log_name)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _update_log_objs(self, context, ovn_txn, log_objs):"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0c3756_4b62b193","line":189,"in_reply_to":"12170c4e_9bdb6e15","updated":"2021-02-24 14:58:25.000000000","message":"ok too :)","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8ec51d42c20d2aa025e39e48899981449e1c9ad1","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                    (\"severity\", \"info\")"},{"line_number":187,"context_line":"                ))"},{"line_number":188,"context_line":"                acl_changes +\u003d 1"},{"line_number":189,"context_line":"        LOG.info(\"Set %d (out of %d visited) ACLs for network log %s\","},{"line_number":190,"context_line":"                 acl_changes, acl_visits, log_name)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _update_log_objs(self, context, ovn_txn, log_objs):"}],"source_content_type":"text/x-python","patch_set":32,"id":"12170c4e_9bdb6e15","line":189,"in_reply_to":"4ecbd53a_78772bde","updated":"2021-02-23 11:31:23.000000000","message":"^^ same answer. ;)","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"42708bbd28107de0d6b14ac2a3ff1d3179c433b0","unresolved":true,"context_lines":[{"line_number":110,"context_line":"                meter_band \u003d self.ovn_nb.lookup(\"Meter_Band\","},{"line_number":111,"context_line":"                                                meter.bands[0].uuid)"},{"line_number":112,"context_line":"                if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":113,"context_line":"                        meter.fair[0] is True,"},{"line_number":114,"context_line":"                        meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"},{"line_number":115,"context_line":"                        meter_band.burst_size \u003d\u003d"},{"line_number":116,"context_line":"                        cfg.CONF.network_log.burst_limit)):"}],"source_content_type":"text/x-python","patch_set":36,"id":"183f6994_ddea61e0","line":113,"range":{"start_line":113,"start_character":24,"end_line":113,"end_character":45},"updated":"2021-02-25 12:03:51.000000000","message":"meter.fair[0]\n\nshould be enough, no?","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8bb15e2824dee6894b2ba96e1e4fd6bf5211747a","unresolved":true,"context_lines":[{"line_number":110,"context_line":"                meter_band \u003d self.ovn_nb.lookup(\"Meter_Band\","},{"line_number":111,"context_line":"                                                meter.bands[0].uuid)"},{"line_number":112,"context_line":"                if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":113,"context_line":"                        meter.fair[0] is True,"},{"line_number":114,"context_line":"                        meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"},{"line_number":115,"context_line":"                        meter_band.burst_size \u003d\u003d"},{"line_number":116,"context_line":"                        cfg.CONF.network_log.burst_limit)):"}],"source_content_type":"text/x-python","patch_set":36,"id":"4cbe5fd0_312157e2","line":113,"range":{"start_line":113,"start_character":24,"end_line":113,"end_character":45},"in_reply_to":"183f6994_ddea61e0","updated":"2021-02-25 13:43:27.000000000","message":"yeah, I think so. will fix.","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8928fc83aba34622d98097aa3c85e732cff701f7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                meter_band \u003d self.ovn_nb.lookup(\"Meter_Band\","},{"line_number":111,"context_line":"                                                meter.bands[0].uuid)"},{"line_number":112,"context_line":"                if all((meter.unit \u003d\u003d \"pktps\","},{"line_number":113,"context_line":"                        meter.fair[0] is True,"},{"line_number":114,"context_line":"                        meter_band.rate \u003d\u003d cfg.CONF.network_log.rate_limit,"},{"line_number":115,"context_line":"                        meter_band.burst_size \u003d\u003d"},{"line_number":116,"context_line":"                        cfg.CONF.network_log.burst_limit)):"}],"source_content_type":"text/x-python","patch_set":36,"id":"22538bfa_80ea5a41","line":113,"range":{"start_line":113,"start_character":24,"end_line":113,"end_character":45},"in_reply_to":"4cbe5fd0_312157e2","updated":"2021-02-25 15:33:08.000000000","message":"Done","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"42708bbd28107de0d6b14ac2a3ff1d3179c433b0","unresolved":true,"context_lines":[{"line_number":138,"context_line":"    @staticmethod"},{"line_number":139,"context_line":"    def _acl_actions_enabled(log_obj):"},{"line_number":140,"context_line":"        if not log_obj.enabled:"},{"line_number":141,"context_line":"            return {}"},{"line_number":142,"context_line":"        if log_obj.event \u003d\u003d log_const.ACCEPT_EVENT:"},{"line_number":143,"context_line":"            return {ovn_const.ACL_ACTION_ALLOW_RELATED,"},{"line_number":144,"context_line":"                    ovn_const.ACL_ACTION_ALLOW}"}],"source_content_type":"text/x-python","patch_set":36,"id":"97fc8e2d_00c19fbf","line":141,"range":{"start_line":141,"start_character":19,"end_line":141,"end_character":21},"updated":"2021-02-25 12:03:51.000000000","message":"nit: Everything below returns a set while this returns an empty dict. Would be good to return always a consistent type\n\n return set()","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8928fc83aba34622d98097aa3c85e732cff701f7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    @staticmethod"},{"line_number":139,"context_line":"    def _acl_actions_enabled(log_obj):"},{"line_number":140,"context_line":"        if not log_obj.enabled:"},{"line_number":141,"context_line":"            return {}"},{"line_number":142,"context_line":"        if log_obj.event \u003d\u003d log_const.ACCEPT_EVENT:"},{"line_number":143,"context_line":"            return {ovn_const.ACL_ACTION_ALLOW_RELATED,"},{"line_number":144,"context_line":"                    ovn_const.ACL_ACTION_ALLOW}"}],"source_content_type":"text/x-python","patch_set":36,"id":"f6112ac6_04980d9d","line":141,"range":{"start_line":141,"start_character":19,"end_line":141,"end_character":21},"in_reply_to":"1daf0667_118b6940","updated":"2021-02-25 15:33:08.000000000","message":"Done","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8bb15e2824dee6894b2ba96e1e4fd6bf5211747a","unresolved":true,"context_lines":[{"line_number":138,"context_line":"    @staticmethod"},{"line_number":139,"context_line":"    def _acl_actions_enabled(log_obj):"},{"line_number":140,"context_line":"        if not log_obj.enabled:"},{"line_number":141,"context_line":"            return {}"},{"line_number":142,"context_line":"        if log_obj.event \u003d\u003d log_const.ACCEPT_EVENT:"},{"line_number":143,"context_line":"            return {ovn_const.ACL_ACTION_ALLOW_RELATED,"},{"line_number":144,"context_line":"                    ovn_const.ACL_ACTION_ALLOW}"}],"source_content_type":"text/x-python","patch_set":36,"id":"1daf0667_118b6940","line":141,"range":{"start_line":141,"start_character":19,"end_line":141,"end_character":21},"in_reply_to":"97fc8e2d_00c19fbf","updated":"2021-02-25 13:43:27.000000000","message":"true! will fix","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"42708bbd28107de0d6b14ac2a3ff1d3179c433b0","unresolved":true,"context_lines":[{"line_number":344,"context_line":"    global DRIVER"},{"line_number":345,"context_line":"    if not DRIVER:"},{"line_number":346,"context_line":"        DRIVER \u003d OVNDriver.create(plugin_driver)"},{"line_number":347,"context_line":"    else:"},{"line_number":348,"context_line":"        DRIVER.plugin_driver \u003d plugin_driver"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    # Trigger decorator"},{"line_number":351,"context_line":"    importutils.import_module("}],"source_content_type":"text/x-python","patch_set":36,"id":"2a0e08d5_dfb2755c","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":44},"updated":"2021-02-25 12:03:51.000000000","message":"When is this used in production?","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8928fc83aba34622d98097aa3c85e732cff701f7","unresolved":false,"context_lines":[{"line_number":344,"context_line":"    global DRIVER"},{"line_number":345,"context_line":"    if not DRIVER:"},{"line_number":346,"context_line":"        DRIVER \u003d OVNDriver.create(plugin_driver)"},{"line_number":347,"context_line":"    else:"},{"line_number":348,"context_line":"        DRIVER.plugin_driver \u003d plugin_driver"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    # Trigger decorator"},{"line_number":351,"context_line":"    importutils.import_module("}],"source_content_type":"text/x-python","patch_set":36,"id":"1c2af6b4_f224384a","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":44},"in_reply_to":"12d4f669_02f577a3","updated":"2021-02-25 15:33:08.000000000","message":"Done","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8bb15e2824dee6894b2ba96e1e4fd6bf5211747a","unresolved":true,"context_lines":[{"line_number":344,"context_line":"    global DRIVER"},{"line_number":345,"context_line":"    if not DRIVER:"},{"line_number":346,"context_line":"        DRIVER \u003d OVNDriver.create(plugin_driver)"},{"line_number":347,"context_line":"    else:"},{"line_number":348,"context_line":"        DRIVER.plugin_driver \u003d plugin_driver"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    # Trigger decorator"},{"line_number":351,"context_line":"    importutils.import_module("}],"source_content_type":"text/x-python","patch_set":36,"id":"12d4f669_02f577a3","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":44},"in_reply_to":"2a0e08d5_dfb2755c","updated":"2021-02-25 13:43:27.000000000","message":"I do not think it will happen in production, unless register was called\nmultiple times and the instance of plugin_driver changed. Like we do\nit in the tests. :) Is that an issue, you think? Maybe there is a better\nway for doing this if you think so.","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":323,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":324,"context_line":"            self._remove_acls_log(pgs, ovn_txn, utils.ovn_name(log_obj.id))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":327,"context_line":"            self._update_log_objs(context, ovn_txn, [lo for lo in log_objs"},{"line_number":328,"context_line":"                                                     if lo.id !\u003d log_obj.id])"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"dc97f26a_b9990d7f","line":326,"updated":"2021-03-01 16:41:13.000000000","message":"Why do we need two transactions here?","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"48086efd06a9c03276ab193d38cea6efd2e27668","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":324,"context_line":"            self._remove_acls_log(pgs, ovn_txn, utils.ovn_name(log_obj.id))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":327,"context_line":"            self._update_log_objs(context, ovn_txn, [lo for lo in log_objs"},{"line_number":328,"context_line":"                                                     if lo.id !\u003d log_obj.id])"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"4eb60e73_ca6871d7","line":326,"in_reply_to":"a70df6ec_9535961f","updated":"2021-03-01 23:28:05.000000000","message":"I actually test this case. If I do not separate the clearing and the setting into 2 transactions, the test would fail like shown below. I will add a comment here\nto better explain why we needed to break into 2 transactions. TY for bringing this up!\n\n\n```\nneutron.tests.functional.services.logapi.drivers.ovn.test_driver.LogApiTestCase.test_overlap_net_logs\n-----------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/opt/stack/neutron/neutron/tests/base.py\", line 182, in func\n    return f(self, *args, **kwargs)\n\n      File \"/opt/stack/neutron/neutron/tests/functional/services/logapi/drivers/ovn/test_driver.py\", line 230, in test_overlap_net_logs\n    acl \u003d self._check_acl_log(sgr)\n\n      File \"/opt/stack/neutron/neutron/tests/functional/services/logapi/drivers/ovn/test_driver.py\", line 110, in _check_acl_log\n    self.assertEqual(is_enabled, acl.log)\n\n      File \"/opt/stack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/testtools/testcase.py\", line 415, in assertEqual\n    self.assertThat(observed, matcher, message)\n\n      File \"/opt/stack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/testtools/testcase.py\", line 502, in assertThat\n    raise mismatch_error\n\n    testtools.matchers._impl.MismatchError: True !\u003d False\n```","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":323,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":324,"context_line":"            self._remove_acls_log(pgs, ovn_txn, utils.ovn_name(log_obj.id))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        with self.ovn_nb.transaction(check_error\u003dTrue) as ovn_txn:"},{"line_number":327,"context_line":"            self._update_log_objs(context, ovn_txn, [lo for lo in log_objs"},{"line_number":328,"context_line":"                                                     if lo.id !\u003d log_obj.id])"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"a70df6ec_9535961f","line":326,"in_reply_to":"dc97f26a_b9990d7f","updated":"2021-03-01 21:05:02.000000000","message":"The need to break this up into 2 transaction is needed because of the atomic behavior I expect to see, where the ordering of the changes should not be assumed.\n\nIn this particular case, txn 1 will clear attributes of acl rows, which is potentially the same exact attirbute/rows set via txn 2. The txn 2 actually checks if the attribute is \u0027cleared\u0027 before deciding to write to it. If what happens in txn 2 ever happened before txn 1 changes is done, this would spell trouble. See line 183 above for the exact place where this is happening.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"}],"neutron/tests/functional/services/logapi/drivers/ovn/test_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7a3ff73376396a396cc6b5a6640ad6122b62bb1c","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(is_enabled, acl.log)"},{"line_number":100,"context_line":"        return acl"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_basic(self):"},{"line_number":103,"context_line":"        self.assertIsNotNone(self.log_plugin)"},{"line_number":104,"context_line":"        self.assertEqual([],"},{"line_number":105,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"e1a06112_95dda755","line":102,"updated":"2021-02-12 10:34:15.000000000","message":"Apparently there\u0027s a problem with this test here: https://a5add638f395680c501b-5a2e25cd3e2f3adbdcbfdb283f832c7a.ssl.cf1.rackcdn.com/768129/32/check/neutron-functional-with-uwsgi/9454fa6/testr_results.html","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"43b038ad8d9b3642758e503f19bf1943a45fc269","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(is_enabled, acl.log)"},{"line_number":100,"context_line":"        return acl"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_basic(self):"},{"line_number":103,"context_line":"        self.assertIsNotNone(self.log_plugin)"},{"line_number":104,"context_line":"        self.assertEqual([],"},{"line_number":105,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"c3a03992_5fcda8fc","line":102,"in_reply_to":"18d8166f_f0c8d965","updated":"2021-02-15 15:58:06.000000000","message":"Can You maybe skip those tests if logging is not supported? You have already function to check that network_logging_supported(), right?","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8ec51d42c20d2aa025e39e48899981449e1c9ad1","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(is_enabled, acl.log)"},{"line_number":100,"context_line":"        return acl"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_basic(self):"},{"line_number":103,"context_line":"        self.assertIsNotNone(self.log_plugin)"},{"line_number":104,"context_line":"        self.assertEqual([],"},{"line_number":105,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff04e832_8892c5e6","line":102,"in_reply_to":"c3a03992_5fcda8fc","updated":"2021-02-23 11:31:23.000000000","message":"Good idea! Will do.","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"df45e38254a868182b75f589ef4c49c78d574da4","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(is_enabled, acl.log)"},{"line_number":100,"context_line":"        return acl"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_basic(self):"},{"line_number":103,"context_line":"        self.assertIsNotNone(self.log_plugin)"},{"line_number":104,"context_line":"        self.assertEqual([],"},{"line_number":105,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"18d8166f_f0c8d965","line":102,"in_reply_to":"e1a06112_95dda755","updated":"2021-02-12 15:46:29.000000000","message":"Indeed. This feature requires OVN 20.12 [0] or newer and Zuul currently uses OVN 20.06.1.\nWe will need to take care of that before making progress.\n\nhttps://review.opendev.org/c/openstack/neutron/+/775383 Bump OVN version to v20.12.0 w/out changing ovs will not work","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8974fc57245b5a31863d8cd282bc40258847b810","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(is_enabled, acl.log)"},{"line_number":100,"context_line":"        return acl"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_basic(self):"},{"line_number":103,"context_line":"        self.assertIsNotNone(self.log_plugin)"},{"line_number":104,"context_line":"        self.assertEqual([],"},{"line_number":105,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"638e2b29_2cedc06d","line":102,"in_reply_to":"ff04e832_8892c5e6","updated":"2021-02-23 21:26:14.000000000","message":"Done","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"42708bbd28107de0d6b14ac2a3ff1d3179c433b0","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":119,"context_line":"                check_error\u003dTrue)"},{"line_number":120,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def test_log_disabled(self):"},{"line_number":123,"context_line":"        log_data \u003d {\u0027log\u0027: {\u0027resource_type\u0027: \u0027security_group\u0027,"},{"line_number":124,"context_line":"                            \u0027enabled\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":36,"id":"26233192_556a5a53","line":121,"updated":"2021-02-25 12:03:51.000000000","message":"Do you plan to add more tests? Seems like we\u0027re missing most of CRUD operations and different actions. Also deleting logs and deleting the last logs or if no logs are present.","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8bb15e2824dee6894b2ba96e1e4fd6bf5211747a","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":119,"context_line":"                check_error\u003dTrue)"},{"line_number":120,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def test_log_disabled(self):"},{"line_number":123,"context_line":"        log_data \u003d {\u0027log\u0027: {\u0027resource_type\u0027: \u0027security_group\u0027,"},{"line_number":124,"context_line":"                            \u0027enabled\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":36,"id":"68f37615_7b6790b0","line":121,"in_reply_to":"26233192_556a5a53","updated":"2021-02-25 13:43:27.000000000","message":"Yes, definitely! BUT I was hoping to have them in a separate Gerrit. I\u0027m still hoping that is okay...","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"333e4fea85f51fccdd12973d7752d087b366bc46","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":119,"context_line":"                check_error\u003dTrue)"},{"line_number":120,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def test_log_disabled(self):"},{"line_number":123,"context_line":"        log_data \u003d {\u0027log\u0027: {\u0027resource_type\u0027: \u0027security_group\u0027,"},{"line_number":124,"context_line":"                            \u0027enabled\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":36,"id":"18e95b62_5d7d112d","line":121,"in_reply_to":"68f37615_7b6790b0","updated":"2021-02-26 02:53:04.000000000","message":"Done","commit_id":"860e02535161bf1561cff1cd8bae418636d955fd"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"2d0644ff_9b560f0b","line":30,"updated":"2021-03-01 16:41:13.000000000","message":"I\u0027m wondering if we need to create the whole env per every test we run. Note that this is called for every \"def test_\" method below and invokes lots of interactions. I don\u0027t have numbers as the tests are skipped but seems like \"test_log_ovn_unsupported\" will also create the whole env just to perform simple check.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"99ed18f2db15ed4382f6110c3ed79f4324d62551","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"b68f3eb8_52f762ae","line":30,"in_reply_to":"0bf04ff5_5dff876a","updated":"2021-03-02 15:34:32.000000000","message":"Done","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"48086efd06a9c03276ab193d38cea6efd2e27668","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"38d29f29_dc2a1d6d","line":30,"in_reply_to":"196772de_21afa069","updated":"2021-03-01 23:28:05.000000000","message":"Okay, I checked. Once line 28 takes place and the test is determined to be skipped, the lines that follow do not take place. So the prepare env code is not invoked at all.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"196772de_21afa069","line":30,"in_reply_to":"2d0644ff_9b560f0b","updated":"2021-03-01 21:05:02.000000000","message":"Hmm... My understanding was that once the call to \u0027self._check_is_supported()\u0027 was done and if the fair meter support was not there, the test would not proceed beyond line 28. I will verify that this is the case.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"df94683a205e5a646c29e7f20d89fb4ff482c6e1","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"c641cf2a_0b3b38d6","line":30,"in_reply_to":"2da6753b_012311b2","updated":"2021-03-02 11:12:55.000000000","message":"Then in such case, is it gonna create the security groups, rules and ports?","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3f68607d26d36ce91be1e164e7e4e67cf1699577","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"7b130a45_435ec849","line":30,"in_reply_to":"38d29f29_dc2a1d6d","updated":"2021-03-02 08:11:10.000000000","message":"How is L141 gonna get triggered then?","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"1c97ca3fd150cfe7a1eb5da72ce1b9db591d229b","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"2da6753b_012311b2","line":30,"in_reply_to":"7b130a45_435ec849","updated":"2021-03-02 10:49:30.000000000","message":"That gets triggered when the dut have the version of ovn that does support fair meters, like all other tests. That particular test will mock the response to be False to fake the response.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"599167faf4147030249ed6f35bf85b283c644ba5","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":28,"context_line":"        self._check_is_supported()"},{"line_number":29,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":30,"context_line":"        self._prepare_env()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_is_supported(self):"},{"line_number":33,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":38,"id":"0bf04ff5_5dff876a","line":30,"in_reply_to":"c641cf2a_0b3b38d6","updated":"2021-03-02 15:14:20.000000000","message":"It would. Let me break the test up into 2 categories, as we talked offline.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        self.assertIsNotNone(log_obj2)"},{"line_number":137,"context_line":"        log_objs_get \u003d self.log_plugin.get_logs(self.ctxt)"},{"line_number":138,"context_line":"        log_objs_ids \u003d {x[\u0027id\u0027] for x in log_objs_get}"},{"line_number":139,"context_line":"        self.assertEqual(set([log_obj[\u0027id\u0027], log_obj2[\u0027id\u0027]]), log_objs_ids)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_log_ovn_unsupported(self):"},{"line_number":142,"context_line":"        with mock.patch.object(self.log_driver, \u0027network_logging_supported\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"2e5069bc_1aac1af0","line":139,"range":{"start_line":139,"start_character":25,"end_line":139,"end_character":61},"updated":"2021-03-01 16:41:13.000000000","message":"nit: {log_obj[\u0027id\u0027], log_obj2[\u0027id\u0027]}","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        self.assertIsNotNone(log_obj2)"},{"line_number":137,"context_line":"        log_objs_get \u003d self.log_plugin.get_logs(self.ctxt)"},{"line_number":138,"context_line":"        log_objs_ids \u003d {x[\u0027id\u0027] for x in log_objs_get}"},{"line_number":139,"context_line":"        self.assertEqual(set([log_obj[\u0027id\u0027], log_obj2[\u0027id\u0027]]), log_objs_ids)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_log_ovn_unsupported(self):"},{"line_number":142,"context_line":"        with mock.patch.object(self.log_driver, \u0027network_logging_supported\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"dd170864_0e1bfd31","line":139,"range":{"start_line":139,"start_character":25,"end_line":139,"end_character":61},"in_reply_to":"2e5069bc_1aac1af0","updated":"2021-03-01 21:05:02.000000000","message":"ack. will change.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"48086efd06a9c03276ab193d38cea6efd2e27668","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertIsNotNone(log_obj2)"},{"line_number":137,"context_line":"        log_objs_get \u003d self.log_plugin.get_logs(self.ctxt)"},{"line_number":138,"context_line":"        log_objs_ids \u003d {x[\u0027id\u0027] for x in log_objs_get}"},{"line_number":139,"context_line":"        self.assertEqual(set([log_obj[\u0027id\u0027], log_obj2[\u0027id\u0027]]), log_objs_ids)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_log_ovn_unsupported(self):"},{"line_number":142,"context_line":"        with mock.patch.object(self.log_driver, \u0027network_logging_supported\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"f0eb8049_041dbfc8","line":139,"range":{"start_line":139,"start_character":25,"end_line":139,"end_character":61},"in_reply_to":"dd170864_0e1bfd31","updated":"2021-03-01 23:28:05.000000000","message":"Done","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                              self.ctxt, log_data)"},{"line_number":149,"context_line":"            supported_mock.assert_called_once()"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_add_and_remove(self):"},{"line_number":152,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"},{"line_number":153,"context_line":"        self.assertEqual([],"},{"line_number":154,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":38,"id":"a08abb13_cf6a3950","line":151,"range":{"start_line":151,"start_character":21,"end_line":151,"end_character":27},"updated":"2021-03-01 16:41:13.000000000","message":"There seems to be several codepaths when delete_log() is called with no log_objs or a single one. We should cover all possible combinations.","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"48086efd06a9c03276ab193d38cea6efd2e27668","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                              self.ctxt, log_data)"},{"line_number":149,"context_line":"            supported_mock.assert_called_once()"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_add_and_remove(self):"},{"line_number":152,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"},{"line_number":153,"context_line":"        self.assertEqual([],"},{"line_number":154,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":38,"id":"8b4cda44_04fc9e62","line":151,"range":{"start_line":151,"start_character":21,"end_line":151,"end_character":27},"in_reply_to":"6b5c2910_9b70f551","updated":"2021-03-01 23:28:05.000000000","message":"Done","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                              self.ctxt, log_data)"},{"line_number":149,"context_line":"            supported_mock.assert_called_once()"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_add_and_remove(self):"},{"line_number":152,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"},{"line_number":153,"context_line":"        self.assertEqual([],"},{"line_number":154,"context_line":"                         self.nb_api.meter_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":38,"id":"6b5c2910_9b70f551","line":151,"range":{"start_line":151,"start_character":21,"end_line":151,"end_character":27},"in_reply_to":"a08abb13_cf6a3950","updated":"2021-03-01 21:05:02.000000000","message":"ack. will change","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            self.assertEqual(utils.ovn_name(log_obj[\u0027id\u0027]), acl.name[0])"},{"line_number":160,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":161,"context_line":"                check_error\u003dTrue)"},{"line_number":162,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.log_plugin.delete_log(self.ctxt, log_obj[\u0027id\u0027])"},{"line_number":165,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":38,"id":"34b825b8_cba03576","line":162,"updated":"2021-03-01 16:41:13.000000000","message":"Why is the meter.unit special here? Shall we also check other things like rate and burst_size?","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            self.assertEqual(utils.ovn_name(log_obj[\u0027id\u0027]), acl.name[0])"},{"line_number":160,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":161,"context_line":"                check_error\u003dTrue)"},{"line_number":162,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.log_plugin.delete_log(self.ctxt, log_obj[\u0027id\u0027])"},{"line_number":165,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":38,"id":"75e2f1e1_c2894cae","line":162,"in_reply_to":"34b825b8_cba03576","updated":"2021-03-01 21:05:02.000000000","message":"Actually, rate and burst_size are attributes in the meter_band rows, which are separate from\nthe meter rows themselves: [0]\nThese are the attributes in a meter row: name, unit, bands, fair, external_ids \nI will enhance the checks to verify them as well, but thought it would be a little bit of an overkill.\n\n[0]: http://manpages.ubuntu.com/manpages/hirsute/man5/ovn-nb.5.html#meter%20table","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"48086efd06a9c03276ab193d38cea6efd2e27668","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            self.assertEqual(utils.ovn_name(log_obj[\u0027id\u0027]), acl.name[0])"},{"line_number":160,"context_line":"            meter \u003d self.nb_api.meter_get(acl.meter[0]).execute("},{"line_number":161,"context_line":"                check_error\u003dTrue)"},{"line_number":162,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.log_plugin.delete_log(self.ctxt, log_obj[\u0027id\u0027])"},{"line_number":165,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":38,"id":"f57ef532_0864163b","line":162,"in_reply_to":"75e2f1e1_c2894cae","updated":"2021-03-01 23:28:05.000000000","message":"Done","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9c24c200205d36372339dd762ea77aa76294e6b","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        log_data[\u0027log\u0027][\u0027name\u0027] \u003d \u0027logme-yay\u0027"},{"line_number":184,"context_line":"        log_data[\u0027log\u0027][\u0027description\u0027] \u003d \u0027logs are a beautiful thing\u0027"},{"line_number":185,"context_line":"        log_data[\u0027log\u0027][\u0027enabled\u0027] \u003d True"},{"line_number":186,"context_line":"        self.log_plugin.update_log(self.ctxt, log_obj[\u0027id\u0027], log_data)"},{"line_number":187,"context_line":"        self._check_sgrs()"}],"source_content_type":"text/x-python","patch_set":38,"id":"01f44fd4_a268bf82","line":184,"range":{"start_line":184,"start_character":41,"end_line":184,"end_character":69},"updated":"2021-03-01 16:41:13.000000000","message":":D","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"c1db967744b6adb89a138218ff54e43fe9820ed4","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        self._check_sgrs(is_enabled\u003dFalse)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        log_data[\u0027log\u0027][\u0027name\u0027] \u003d \u0027logme-yay\u0027"},{"line_number":184,"context_line":"        log_data[\u0027log\u0027][\u0027description\u0027] \u003d \u0027logs are a beautiful thing\u0027"},{"line_number":185,"context_line":"        log_data[\u0027log\u0027][\u0027enabled\u0027] \u003d True"},{"line_number":186,"context_line":"        self.log_plugin.update_log(self.ctxt, log_obj[\u0027id\u0027], log_data)"},{"line_number":187,"context_line":"        self._check_sgrs()"}],"source_content_type":"text/x-python","patch_set":38,"id":"52e4fdee_e63cfcff","line":184,"range":{"start_line":184,"start_character":41,"end_line":184,"end_character":69},"in_reply_to":"01f44fd4_a268bf82","updated":"2021-03-01 21:05:02.000000000","message":"Ack","commit_id":"dd587c6aebc75174482c82cc4488a7fbb73f7ea2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3f68607d26d36ce91be1e164e7e4e67cf1699577","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                check_error\u003dTrue)"},{"line_number":165,"context_line":"            self.assertEqual([True], meter.fair)"},{"line_number":166,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":167,"context_line":"            self.assertTrue(1, len(meter.bands))"},{"line_number":168,"context_line":"            self.assertEqual({ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY:"},{"line_number":169,"context_line":"                              log_const.LOGGING_PLUGIN}, meter.external_ids)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"4d9bf069_d56f436d","line":167,"range":{"start_line":167,"start_character":23,"end_line":167,"end_character":27},"updated":"2021-03-02 08:11:10.000000000","message":"Equal ?","commit_id":"d6ccd93949156aa35b4db74cde42ddda3140e33e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"1c97ca3fd150cfe7a1eb5da72ce1b9db591d229b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                check_error\u003dTrue)"},{"line_number":165,"context_line":"            self.assertEqual([True], meter.fair)"},{"line_number":166,"context_line":"            self.assertEqual(\u0027pktps\u0027, meter.unit)"},{"line_number":167,"context_line":"            self.assertTrue(1, len(meter.bands))"},{"line_number":168,"context_line":"            self.assertEqual({ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY:"},{"line_number":169,"context_line":"                              log_const.LOGGING_PLUGIN}, meter.external_ids)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"d8074f09_81995b36","line":167,"range":{"start_line":167,"start_character":23,"end_line":167,"end_character":27},"in_reply_to":"4d9bf069_d56f436d","updated":"2021-03-02 10:49:30.000000000","message":"/me :facepalm. :^)","commit_id":"d6ccd93949156aa35b4db74cde42ddda3140e33e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3f68607d26d36ce91be1e164e7e4e67cf1699577","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        for sg in self.sgs:"},{"line_number":178,"context_line":"            log_data \u003d self._log_data(sg_id\u003dsg)"},{"line_number":179,"context_line":"            log_objs.append(self.log_plugin.create_log(self.ctxt, log_data))"},{"line_number":180,"context_line":"        self.assertTrue(len(log_objs),"},{"line_number":181,"context_line":"                        len(self.log_plugin.get_logs(self.ctxt)))"},{"line_number":182,"context_line":"        self._check_sgrs(is_enabled\u003dTrue)"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"fbf0f8fa_fba723b0","line":180,"range":{"start_line":180,"start_character":19,"end_line":180,"end_character":23},"updated":"2021-03-02 08:11:10.000000000","message":"Equal ?","commit_id":"d6ccd93949156aa35b4db74cde42ddda3140e33e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"1c97ca3fd150cfe7a1eb5da72ce1b9db591d229b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for sg in self.sgs:"},{"line_number":178,"context_line":"            log_data \u003d self._log_data(sg_id\u003dsg)"},{"line_number":179,"context_line":"            log_objs.append(self.log_plugin.create_log(self.ctxt, log_data))"},{"line_number":180,"context_line":"        self.assertTrue(len(log_objs),"},{"line_number":181,"context_line":"                        len(self.log_plugin.get_logs(self.ctxt)))"},{"line_number":182,"context_line":"        self._check_sgrs(is_enabled\u003dTrue)"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"e1bc993f_b5f52baf","line":180,"range":{"start_line":180,"start_character":19,"end_line":180,"end_character":23},"in_reply_to":"fbf0f8fa_fba723b0","updated":"2021-03-02 10:49:30.000000000","message":"/me :facepalm. :^)","commit_id":"d6ccd93949156aa35b4db74cde42ddda3140e33e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"67a529a0f1767c905e0d4d278d1cb668368b1013","unresolved":true,"context_lines":[{"line_number":29,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":30,"context_line":"        self._check_is_supported()"},{"line_number":31,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":32,"context_line":"        self._prepare_env()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _check_is_supported(self):"},{"line_number":35,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":41,"id":"c7323aed_c7e25c15","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":27},"updated":"2021-03-02 15:36:04.000000000","message":"This line should go away :)","commit_id":"159714b0ad16df457e0a79d93e94bbac4ac0ba4c"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0f5d6f5c56d575d9089960cdbc0a0e10bec13c33","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.log_driver \u003d self.mech_driver.log_driver"},{"line_number":30,"context_line":"        self._check_is_supported()"},{"line_number":31,"context_line":"        self.ctxt \u003d context.Context(\u0027admin\u0027, \u0027fake_tenant\u0027)"},{"line_number":32,"context_line":"        self._prepare_env()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _check_is_supported(self):"},{"line_number":35,"context_line":"        if not self.log_driver.network_logging_supported(self.nb_api):"}],"source_content_type":"text/x-python","patch_set":41,"id":"e753ccba_f6d0d20f","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":27},"in_reply_to":"c7323aed_c7e25c15","updated":"2021-03-02 15:38:33.000000000","message":"Done","commit_id":"159714b0ad16df457e0a79d93e94bbac4ac0ba4c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"67a529a0f1767c905e0d4d278d1cb668368b1013","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class LogApiTestCaseSimple(LogApiTestCaseBase):"},{"line_number":42,"context_line":"    def setUp(self):"},{"line_number":43,"context_line":"        super().setUp()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_basic_get(self):"},{"line_number":46,"context_line":"        log_obj \u003d self.log_plugin.create_log(self.ctxt, self._log_data())"}],"source_content_type":"text/x-python","patch_set":41,"id":"960ab256_31824b09","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":23},"updated":"2021-03-02 15:36:04.000000000","message":"you don\u0027t need this","commit_id":"159714b0ad16df457e0a79d93e94bbac4ac0ba4c"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0f5d6f5c56d575d9089960cdbc0a0e10bec13c33","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class LogApiTestCaseSimple(LogApiTestCaseBase):"},{"line_number":42,"context_line":"    def setUp(self):"},{"line_number":43,"context_line":"        super().setUp()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_basic_get(self):"},{"line_number":46,"context_line":"        log_obj \u003d self.log_plugin.create_log(self.ctxt, self._log_data())"}],"source_content_type":"text/x-python","patch_set":41,"id":"1e39d003_ffb112cf","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":23},"in_reply_to":"960ab256_31824b09","updated":"2021-03-02 15:38:33.000000000","message":"Done","commit_id":"159714b0ad16df457e0a79d93e94bbac4ac0ba4c"}],"neutron/tests/unit/services/logapi/drivers/ovn/test_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2e0dea74cb9e57c652c202d7238aeac84354254f","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            fair\u003dTrue,"},{"line_number":123,"context_line":"            burst_size\u003dFAKE_CFG_BURST,"},{"line_number":124,"context_line":"            may_exist\u003dFalse,"},{"line_number":125,"context_line":"            external_ids\u003d{\"neutron:device_owner\": \"neutron:network_log\"})"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test__create_ovn_fair_meter_unchanged(self):"},{"line_number":128,"context_line":"        mock_find_rows \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":32,"id":"fe39bc4e_fd4fb73b","line":125,"range":{"start_line":125,"start_character":27,"end_line":125,"end_character":47},"updated":"2021-02-12 10:32:34.000000000","message":"nit: constant.OVN_DEVICE_OWNER_EXT_ID_KEY","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8974fc57245b5a31863d8cd282bc40258847b810","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            fair\u003dTrue,"},{"line_number":123,"context_line":"            burst_size\u003dFAKE_CFG_BURST,"},{"line_number":124,"context_line":"            may_exist\u003dFalse,"},{"line_number":125,"context_line":"            external_ids\u003d{\"neutron:device_owner\": \"neutron:network_log\"})"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test__create_ovn_fair_meter_unchanged(self):"},{"line_number":128,"context_line":"        mock_find_rows \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":32,"id":"741e912f_b5946260","line":125,"range":{"start_line":125,"start_character":27,"end_line":125,"end_character":47},"in_reply_to":"fe39bc4e_fd4fb73b","updated":"2021-02-23 21:26:14.000000000","message":"Done","commit_id":"a3dcdca2e078042a9431ed37757caf55a458e263"}],"releasenotes/notes/add-sg-logging-ovn-83cc121a657a1d14.yaml":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8f9822b9a4351d0f6f6629c58867b891f144bf9d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Added support for sg logging in OVN."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"    - |"},{"line_number":6,"context_line":"      Support for network logging based on security groups added to"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3f0ce0ed_740b9e3c","line":3,"range":{"start_line":3,"start_character":22,"end_line":3,"end_character":24},"updated":"2021-02-08 14:01:02.000000000","message":"nit: security groups","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"7117e7f0119c5ef5c96252c5cb2db7a050e6a764","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Added support for sg logging in OVN."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"    - |"},{"line_number":6,"context_line":"      Support for network logging based on security groups added to"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"265c097f_ef1011f0","line":3,"range":{"start_line":3,"start_character":22,"end_line":3,"end_character":24},"in_reply_to":"3f0ce0ed_740b9e3c","updated":"2021-02-08 18:52:00.000000000","message":"Done","commit_id":"35cad5a38155ad7254e4a84b91e922c987bc4552"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bc0391c71d3e9060a6a1e9068071f91b2c6e4dfe","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Added support for security groups logging in OVN."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"    - |"},{"line_number":6,"context_line":"      Support for network logging based on security groups added to"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"09aaf1e3_1075d799","line":3,"updated":"2021-02-24 14:58:25.000000000","message":"usually we are not adding prelude section to the release notes but instead we are doing one release note with some highlights of the release at the end of the cycle.","commit_id":"febdad2e017212daf028d0cca0ce03f35cbf0ab1"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"def9641fcf98238b6e839e036cc2d94cbcd9348b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Added support for security groups logging in OVN."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"    - |"},{"line_number":6,"context_line":"      Support for network logging based on security groups added to"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"daf108d8_4503b32f","line":3,"in_reply_to":"09aaf1e3_1075d799","updated":"2021-02-24 15:09:04.000000000","message":"In practical terms, are you saying we should remove lines 2 and 3?\nOr not having this yaml file as part of this gerrit change?\nI\u0027m good with doing either, of course.","commit_id":"febdad2e017212daf028d0cca0ce03f35cbf0ab1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"18c755ed624e82f6599a198b8b96e41ddd1f5f3c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Added support for security groups logging in OVN."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"    - |"},{"line_number":6,"context_line":"      Support for network logging based on security groups added to"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"993ae33f_3d52bde2","line":3,"in_reply_to":"daf108d8_4503b32f","updated":"2021-02-24 15:28:50.000000000","message":"Now it\u0027s ok :) Thx","commit_id":"febdad2e017212daf028d0cca0ce03f35cbf0ab1"}]}
