)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"836cab21f3c04553f82d7b433f56cbfc74e81504","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix KeyError in OVS firewall"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When merging port ranges, the code never assumed the"},{"line_number":10,"context_line":"conjunction ID might not be present in the set due to"},{"line_number":11,"context_line":"having no port range and a remote IP of 0.0.0.0."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I17ab643abbd2ec21eda4ae1dfb9abf2d4b0657f2"},{"line_number":14,"context_line":"Closes-bug: #1813007"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fdfeff1_5dbce8da","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":48},"updated":"2019-03-01 17:28:22.000000000","message":"This is actually not correct. It is triggered when you have two security groups, both using the same remote security group. Then first SG doesn\u0027t define a port ranges and the second one does. Or generally, if the first SG port ranges is a subset of the second as no port-range means the full range.","commit_id":"cfc71ce7c360818ff96ac5a04431cd288a4dca9b"}],"neutron/agent/linux/openvswitch_firewall/rules.py":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"46d74ad5d0ecfacefb53de64d7e2ec65bdeec17a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # item means a removal."},{"line_number":122,"context_line":"    result \u003d []"},{"line_number":123,"context_line":"    rule_tmpl \u003d rule_conj_list[0][0]"},{"line_number":124,"context_line":"    cur_conj \u003d set()"},{"line_number":125,"context_line":"    cur_range_min \u003d None"},{"line_number":126,"context_line":"    for port, m, conj_id in port_ranges:"},{"line_number":127,"context_line":"        if m \u003d\u003d \u0027min\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_7ed65456","line":124,"updated":"2019-03-05 06:17:23.000000000","message":"Using dict instead of set and doing refcounting would solve the problem.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"cd0216e7bfc440c55683fb7eae0c93ca3ea5fa58","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # item means a removal."},{"line_number":122,"context_line":"    result \u003d []"},{"line_number":123,"context_line":"    rule_tmpl \u003d rule_conj_list[0][0]"},{"line_number":124,"context_line":"    cur_conj \u003d set()"},{"line_number":125,"context_line":"    cur_range_min \u003d None"},{"line_number":126,"context_line":"    for port, m, conj_id in port_ranges:"},{"line_number":127,"context_line":"        if m \u003d\u003d \u0027min\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_99e9c31b","line":124,"in_reply_to":"5fc1f717_57f00dca","updated":"2019-03-08 03:12:30.000000000","message":"The other approach is to preprocess rule_conj_list to merge port ranges with the same conj_id before feeding it to this logic.\nIt\u0027s up to you.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"734ef967f74585f76dc963e6f11c4d4561f58025","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # item means a removal."},{"line_number":122,"context_line":"    result \u003d []"},{"line_number":123,"context_line":"    rule_tmpl \u003d rule_conj_list[0][0]"},{"line_number":124,"context_line":"    cur_conj \u003d set()"},{"line_number":125,"context_line":"    cur_range_min \u003d None"},{"line_number":126,"context_line":"    for port, m, conj_id in port_ranges:"},{"line_number":127,"context_line":"        if m \u003d\u003d \u0027min\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_9906a386","line":124,"in_reply_to":"5fc1f717_99e9c31b","updated":"2019-03-08 03:36:59.000000000","message":"Thanks Toshii.  Can you help out?  It\u0027s getting late here.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e15ac6303dd1f3218440ae1a03e5decb6cc6827a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # item means a removal."},{"line_number":122,"context_line":"    result \u003d []"},{"line_number":123,"context_line":"    rule_tmpl \u003d rule_conj_list[0][0]"},{"line_number":124,"context_line":"    cur_conj \u003d set()"},{"line_number":125,"context_line":"    cur_range_min \u003d None"},{"line_number":126,"context_line":"    for port, m, conj_id in port_ranges:"},{"line_number":127,"context_line":"        if m \u003d\u003d \u0027min\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_57f00dca","line":124,"in_reply_to":"9fdfeff1_7ed65456","updated":"2019-03-07 20:56:44.000000000","message":"Do you want to do it that way?","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"}],"neutron/tests/unit/agent/linux/openvswitch_firewall/test_rules.py":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"0003d8fc5344f74b147ba666ed15d9f64bb6c080","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self._test_merge_port_ranges_helper(["},{"line_number":499,"context_line":"                (1, 29, {10, 12}),"},{"line_number":500,"context_line":"                (30, 30, {10, 12}),"},{"line_number":501,"context_line":"                (31, 65535, {12})], result)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def test_merge_port_ranges_nonoverlapping(self):"},{"line_number":504,"context_line":"        result \u003d rules.merge_port_ranges("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_630fa12f","line":501,"updated":"2019-03-05 04:35:57.000000000","message":"IIRC, we expect [(1, 65535, {10, 12})] as the result.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"cd0216e7bfc440c55683fb7eae0c93ca3ea5fa58","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self._test_merge_port_ranges_helper(["},{"line_number":499,"context_line":"                (1, 29, {10, 12}),"},{"line_number":500,"context_line":"                (30, 30, {10, 12}),"},{"line_number":501,"context_line":"                (31, 65535, {12})], result)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def test_merge_port_ranges_nonoverlapping(self):"},{"line_number":504,"context_line":"        result \u003d rules.merge_port_ranges("}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_b9d59f45","line":501,"in_reply_to":"5fc1f717_97219550","updated":"2019-03-08 03:12:30.000000000","message":"To put it differently, I guess this patch will give too restrictive filtering than a user expects from the API.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e15ac6303dd1f3218440ae1a03e5decb6cc6827a","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self._test_merge_port_ranges_helper(["},{"line_number":499,"context_line":"                (1, 29, {10, 12}),"},{"line_number":500,"context_line":"                (30, 30, {10, 12}),"},{"line_number":501,"context_line":"                (31, 65535, {12})], result)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def test_merge_port_ranges_nonoverlapping(self):"},{"line_number":504,"context_line":"        result \u003d rules.merge_port_ranges("}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_97219550","line":501,"in_reply_to":"9fdfeff1_630fa12f","updated":"2019-03-07 20:56:44.000000000","message":"Did I just mess something up in the test?  I can\u0027t say I completely understand it, I was going  based on output of a live system running into the issue.","commit_id":"29c4f5e1f1c8b2e117dec27365264df0e7c42b62"}]}
