)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"6915a8d9d8c9eee193d43bc572f85a9b0d207d01","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yujie \u003cyujie@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-29 21:40:01 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delete conntrack entry with remote_ip on the other direction"},{"line_number":8,"context_line":"When one vm unbind a security-group, the sg is set as a remote-sg"},{"line_number":9,"context_line":"to rules of other sg. Only one direction conntrack entry was"},{"line_number":10,"context_line":"deleted, which is not enough and may cause another direction"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abb7d3a_36fe9537","line":7,"updated":"2016-05-30 23:54:22.000000000","message":"Please put a new line.","commit_id":"76170c23f8426a63d60c2cc1585b2258819013e8"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"6915a8d9d8c9eee193d43bc572f85a9b0d207d01","unresolved":false,"context_lines":[{"line_number":10,"context_line":"deleted, which is not enough and may cause another direction"},{"line_number":11,"context_line":"was still could connect."},{"line_number":12,"context_line":"This patch delete the left one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I31c579dbe28e4e8e824912b695eaba9475cf0095"},{"line_number":15,"context_line":"Close-Bug: #1570171"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abb7d3a_b63c45e3","line":13,"updated":"2016-05-30 23:54:22.000000000","message":"This message is almost same as previous patch[1]. This confuses developers which looks at commit log. Can you add explanation? So previous patch[1] is incomplete and this patch fill the defect.\n\n[1]: I44d6bd0c2465294b557fd01566b72e016d34bba3","commit_id":"76170c23f8426a63d60c2cc1585b2258819013e8"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"163544577f0d5e9e656df5ce3a372b61590553eb","unresolved":false,"context_lines":[{"line_number":11,"context_line":"[1]: I44d6bd0c2465294b557fd01566b72e016d34bba3"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I31c579dbe28e4e8e824912b695eaba9475cf0095"},{"line_number":14,"context_line":"Close-Bug: #1570171"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_fb284de4","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"updated":"2016-06-07 20:46:14.000000000","message":"Nit: Closes-Bug","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":18321,"name":"Yu Jie","email":"yujie@cmss.chinamobile.com","username":"judy-yu"},"change_message_id":"aaae77b6b53f9b2848adcf6f9d8ca6e17c487285","unresolved":false,"context_lines":[{"line_number":11,"context_line":"[1]: I44d6bd0c2465294b557fd01566b72e016d34bba3"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I31c579dbe28e4e8e824912b695eaba9475cf0095"},{"line_number":14,"context_line":"Close-Bug: #1570171"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bacf61ea_5dddfbde","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"in_reply_to":"7aa08908_fb284de4","updated":"2016-07-31 02:01:22.000000000","message":"Done","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"}],"neutron/agent/linux/ip_conntrack.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"6915a8d9d8c9eee193d43bc572f85a9b0d207d01","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ip_cmd \u003d [str(net.ip), \u0027-w\u0027, zone_id]"},{"line_number":59,"context_line":"                if remote_ip and str("},{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    dir \u003d \u0027-s\u0027 if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027"},{"line_number":62,"context_line":"                    ip_cmd.extend([dir, str(remote_ip)])"},{"line_number":63,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"},{"line_number":64,"context_line":"        return conntrack_cmds"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_96eca190","line":61,"range":{"start_line":61,"start_character":20,"end_line":61,"end_character":23},"updated":"2016-05-30 23:54:22.000000000","message":"I guess that \"dir\" often indicates \"directory\" not direction. It\u0027s better to use a \"direction\" here so that it doesn\u0027t confuse us.","commit_id":"76170c23f8426a63d60c2cc1585b2258819013e8"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3933469c77cb91dd8f583fe74fb5b5316c922128","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ip_cmd \u003d [str(net.ip), \u0027-w\u0027, zone_id]"},{"line_number":59,"context_line":"                if remote_ip and str("},{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    dir \u003d \u0027-s\u0027 if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027"},{"line_number":62,"context_line":"                    ip_cmd.extend([dir, str(remote_ip)])"},{"line_number":63,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"},{"line_number":64,"context_line":"        return conntrack_cmds"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_f7aea6e4","line":61,"range":{"start_line":61,"start_character":20,"end_line":61,"end_character":23},"in_reply_to":"9abb7d3a_96eca190","updated":"2016-05-31 13:41:24.000000000","message":"It wouldn\u0027t hurt to change it, but I think given the rule.get(\u0027direction\u0027) on the same line it\u0027s pretty clear that we\u0027re setting a flag to indicate direction.","commit_id":"76170c23f8426a63d60c2cc1585b2258819013e8"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"e930e7e93389ad32f7e4edbd5f96a39f3580d7ec","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ip_cmd \u003d [str(net.ip), \u0027-w\u0027, zone_id]"},{"line_number":59,"context_line":"                if remote_ip and str("},{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    direction \u003d \u0027-s\u0027 if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027\\"},{"line_number":62,"context_line":"                                else \u0027-d\u0027"},{"line_number":63,"context_line":"                    ip_cmd.extend([direction, str(remote_ip)])"},{"line_number":64,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_e7a1a295","line":61,"range":{"start_line":61,"start_character":74,"end_line":61,"end_character":75},"updated":"2016-07-07 00:36:37.000000000","message":"nit: I\u0027d prefer a regular if-else block over multi-line ternary with \u0027\\\u0027 here to improve code readability. Maybe something like this:\n\ndirection \u003d \u0027-s\u0027\nif rule.get(\u0027direction\u0027) \u003d\u003d \u0027egress\u0027:\n  direction \u003d \u0027-d\u0027","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":18321,"name":"Yu Jie","email":"yujie@cmss.chinamobile.com","username":"judy-yu"},"change_message_id":"aaae77b6b53f9b2848adcf6f9d8ca6e17c487285","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ip_cmd \u003d [str(net.ip), \u0027-w\u0027, zone_id]"},{"line_number":59,"context_line":"                if remote_ip and str("},{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    direction \u003d \u0027-s\u0027 if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027\\"},{"line_number":62,"context_line":"                                else \u0027-d\u0027"},{"line_number":63,"context_line":"                    ip_cmd.extend([direction, str(remote_ip)])"},{"line_number":64,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_fdd30fd3","line":61,"range":{"start_line":61,"start_character":74,"end_line":61,"end_character":75},"in_reply_to":"1aa78d24_e7a1a295","updated":"2016-07-31 02:01:22.000000000","message":"Done","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8c15cc1dc8a28647c2302231ab941f34e6f28b77","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    direction \u003d \u0027-s\u0027"},{"line_number":62,"context_line":"                    if rule.get(\u0027direction\u0027) \u003d\u003d \u0027egress\u0027:"},{"line_number":63,"context_line":"                                direction \u003d \u0027-d\u0027"},{"line_number":64,"context_line":"                    ip_cmd.extend([direction, str(remote_ip)])"},{"line_number":65,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"},{"line_number":66,"context_line":"        return conntrack_cmds"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_4986d3db","line":63,"updated":"2016-08-04 17:13:55.000000000","message":"Consider:\n\n  \u0027-s\u0027 if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027\n\nor\n\n  if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027:\n      direction \u003d \u0027-s\u0027\n  else:\n      direction \u003d \u0027-d\u0027\n\n\u0027direction\u0027 is either \u0027-d\u0027 or \u0027-s\u0027 and it is determined by rule[\u0027direction\u0027], so if-else is better from readability perspective.\nIn addition, L.40 check \u0027ingress\u0027, so I think it is better to use the same express. What is different is just the direction of the conntrack parameter.\n\nI know other reviewer suggested not to use the first expression because of a backslash, but I don\u0027t think the current expression is easy to read.","commit_id":"28d5a2738382d49defef86ee60f8013452046ee8"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"08b38bdd0ebf18d1cd9cf9d89baf43e0a678068e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                        netaddr.IPNetwork(remote_ip).version) in ethertype:"},{"line_number":61,"context_line":"                    direction \u003d \u0027-s\u0027"},{"line_number":62,"context_line":"                    if rule.get(\u0027direction\u0027) \u003d\u003d \u0027egress\u0027:"},{"line_number":63,"context_line":"                                direction \u003d \u0027-d\u0027"},{"line_number":64,"context_line":"                    ip_cmd.extend([direction, str(remote_ip)])"},{"line_number":65,"context_line":"                conntrack_cmds.add(tuple(cmd + ip_cmd))"},{"line_number":66,"context_line":"        return conntrack_cmds"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_9f465579","line":63,"in_reply_to":"bacf61ea_4986d3db","updated":"2016-08-04 19:48:55.000000000","message":"I think\n\n  if rule.get(\u0027direction\u0027) \u003d\u003d \u0027ingress\u0027:\n      direction \u003d \u0027-s\u0027\n  else:\n      direction \u003d \u0027-d\u0027\n\nis the best option. Ilya\u0027s comment about the multi-line ternary with backslash is valid, but the proposed change of starting with direction \u003d \u0027-s\u0027 is basically putting the else clause first without the keyword. Better to make it a clear and simple if-else.","commit_id":"28d5a2738382d49defef86ee60f8013452046ee8"}],"neutron/tests/unit/agent/linux/test_iptables_firewall.py":[{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3933469c77cb91dd8f583fe74fb5b5316c922128","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"            ethertype \u003d \"ipv6\""},{"line_number":1205,"context_line":"        self.firewall.filter_defer_apply_off()"},{"line_number":1206,"context_line":"        dir \u003d \u0027-d\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-s\u0027"},{"line_number":1207,"context_line":"        other_dir \u003d \u0027-s\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027"},{"line_number":1208,"context_line":"        if ethertype \u003d\u003d \"ipv4\":"},{"line_number":1209,"context_line":"            calls \u003d ["},{"line_number":1210,"context_line":"                     # initial data has 1, 2, and 9 in use, CT zone will start"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_77963640","line":1207,"updated":"2016-05-31 13:41:24.000000000","message":"Hopefully you\u0027ve got these directions correct. I don\u0027t really know how to judge from the code which direction is correct.","commit_id":"76170c23f8426a63d60c2cc1585b2258819013e8"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c98952425fa40c48ee5c795b6d13431790956a75","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"                                            \u0027IPv6\u0027: [\u0027fe80::3\u0027]}}"},{"line_number":1204,"context_line":"            ethertype \u003d \"ipv6\""},{"line_number":1205,"context_line":"        self.firewall.filter_defer_apply_off()"},{"line_number":1206,"context_line":"        direction \u003d \u0027-d\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-s\u0027"},{"line_number":1207,"context_line":"        remote_ip_direction \u003d \u0027-s\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027"},{"line_number":1208,"context_line":"        if ethertype \u003d\u003d \"ipv4\":"},{"line_number":1209,"context_line":"            calls \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_3a526f67","line":1206,"range":{"start_line":1206,"start_character":28,"end_line":1206,"end_character":52},"updated":"2016-06-02 03:09:22.000000000","message":"This compares two strings so it\u0027s always False.\n\nThat is, \u0027direction\u0027 -\u003e direction","commit_id":"e82007f229e3ec25815103065e2261386d2a8091"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c98952425fa40c48ee5c795b6d13431790956a75","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"            ethertype \u003d \"ipv6\""},{"line_number":1205,"context_line":"        self.firewall.filter_defer_apply_off()"},{"line_number":1206,"context_line":"        direction \u003d \u0027-d\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-s\u0027"},{"line_number":1207,"context_line":"        remote_ip_direction \u003d \u0027-s\u0027 if \u0027direction\u0027 \u003d\u003d \u0027ingress\u0027 else \u0027-d\u0027"},{"line_number":1208,"context_line":"        if ethertype \u003d\u003d \"ipv4\":"},{"line_number":1209,"context_line":"            calls \u003d ["},{"line_number":1210,"context_line":"                     # initial data has 1, 2, and 9 in use, CT zone will start"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_bacc9f35","line":1207,"range":{"start_line":1207,"start_character":38,"end_line":1207,"end_character":62},"updated":"2016-06-02 03:09:22.000000000","message":"ditto","commit_id":"e82007f229e3ec25815103065e2261386d2a8091"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"e930e7e93389ad32f7e4edbd5f96a39f3580d7ec","unresolved":false,"context_lines":[{"line_number":1169,"context_line":""},{"line_number":1170,"context_line":"    def test_remove_conntrack_entries_for_sg_member_changed_ipv4(self):"},{"line_number":1171,"context_line":"        for direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":1172,"context_line":"            for pro in [None, \u0027tcp\u0027, \u0027icmp\u0027, \u0027udp\u0027]:"},{"line_number":1173,"context_line":"                self._test_remove_conntrack_entries_sg_member_changed("},{"line_number":1174,"context_line":"                    \u0027IPv4\u0027, pro, direction)"},{"line_number":1175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_872edef8","line":1172,"range":{"start_line":1172,"start_character":16,"end_line":1172,"end_character":19},"updated":"2016-07-07 00:36:37.000000000","message":"nit: \u0027protocol\u0027 would make it more readable","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":18321,"name":"Yu Jie","email":"yujie@cmss.chinamobile.com","username":"judy-yu"},"change_message_id":"aaae77b6b53f9b2848adcf6f9d8ca6e17c487285","unresolved":false,"context_lines":[{"line_number":1169,"context_line":""},{"line_number":1170,"context_line":"    def test_remove_conntrack_entries_for_sg_member_changed_ipv4(self):"},{"line_number":1171,"context_line":"        for direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":1172,"context_line":"            for pro in [None, \u0027tcp\u0027, \u0027icmp\u0027, \u0027udp\u0027]:"},{"line_number":1173,"context_line":"                self._test_remove_conntrack_entries_sg_member_changed("},{"line_number":1174,"context_line":"                    \u0027IPv4\u0027, pro, direction)"},{"line_number":1175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_bdcd1733","line":1172,"range":{"start_line":1172,"start_character":16,"end_line":1172,"end_character":19},"in_reply_to":"1aa78d24_872edef8","updated":"2016-07-31 02:01:22.000000000","message":"Done","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"e930e7e93389ad32f7e4edbd5f96a39f3580d7ec","unresolved":false,"context_lines":[{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def test_remove_conntrack_entries_for_sg_member_changed_ipv6(self):"},{"line_number":1177,"context_line":"        for direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":1178,"context_line":"            for pro in [None, \u0027tcp\u0027, \u0027icmp\u0027, \u0027udp\u0027]:"},{"line_number":1179,"context_line":"                self._test_remove_conntrack_entries_sg_member_changed("},{"line_number":1180,"context_line":"                    \u0027IPv6\u0027, pro, direction)"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_6731325a","line":1178,"range":{"start_line":1178,"start_character":16,"end_line":1178,"end_character":19},"updated":"2016-07-07 00:36:37.000000000","message":"ditto","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":18321,"name":"Yu Jie","email":"yujie@cmss.chinamobile.com","username":"judy-yu"},"change_message_id":"aaae77b6b53f9b2848adcf6f9d8ca6e17c487285","unresolved":false,"context_lines":[{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def test_remove_conntrack_entries_for_sg_member_changed_ipv6(self):"},{"line_number":1177,"context_line":"        for direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":1178,"context_line":"            for pro in [None, \u0027tcp\u0027, \u0027icmp\u0027, \u0027udp\u0027]:"},{"line_number":1179,"context_line":"                self._test_remove_conntrack_entries_sg_member_changed("},{"line_number":1180,"context_line":"                    \u0027IPv6\u0027, pro, direction)"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_1dcf032a","line":1178,"range":{"start_line":1178,"start_character":16,"end_line":1178,"end_character":19},"in_reply_to":"1aa78d24_6731325a","updated":"2016-07-31 02:01:22.000000000","message":"Done","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"e930e7e93389ad32f7e4edbd5f96a39f3580d7ec","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        self.firewall.filter_defer_apply_off()"},{"line_number":1206,"context_line":"        direction \u003d \u0027-d\u0027 if direction \u003d\u003d \u0027ingress\u0027 else \u0027-s\u0027"},{"line_number":1207,"context_line":"        remote_ip_direction \u003d \u0027-s\u0027 if direction \u003d\u003d \u0027-d\u0027 else \u0027-d\u0027"},{"line_number":1208,"context_line":"        if ethertype \u003d\u003d \"ipv4\":"},{"line_number":1209,"context_line":"            calls \u003d ["},{"line_number":1210,"context_line":"                     # initial data has 1, 2, and 9 in use, CT zone will start"},{"line_number":1211,"context_line":"                     # at 10."},{"line_number":1212,"context_line":"                     mock.call([\u0027conntrack\u0027, \u0027-D\u0027, \u0027-f\u0027, ethertype, direction,"},{"line_number":1213,"context_line":"                                \u002710.0.0.1\u0027, \u0027-w\u0027, 10, remote_ip_direction,"},{"line_number":1214,"context_line":"                                \u002710.0.0.2\u0027],"},{"line_number":1215,"context_line":"                               run_as_root\u003dTrue, check_exit_code\u003dTrue,"},{"line_number":1216,"context_line":"                               extra_ok_codes\u003d[1])]"},{"line_number":1217,"context_line":"        else:"},{"line_number":1218,"context_line":"            calls \u003d ["},{"line_number":1219,"context_line":"                     # initial data has 1, 2, and 9 in use, CT zone will start"},{"line_number":1220,"context_line":"                     # at 10."},{"line_number":1221,"context_line":"                     mock.call([\u0027conntrack\u0027, \u0027-D\u0027, \u0027-f\u0027, ethertype, direction,"},{"line_number":1222,"context_line":"                                \u0027fe80::1\u0027, \u0027-w\u0027, 10, remote_ip_direction,"},{"line_number":1223,"context_line":"                                \u0027fe80::2\u0027],"},{"line_number":1224,"context_line":"                               run_as_root\u003dTrue, check_exit_code\u003dTrue,"},{"line_number":1225,"context_line":"                               extra_ok_codes\u003d[1])]"},{"line_number":1226,"context_line":"        self.utils_exec.assert_has_calls(calls)"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"    def test_user_sg_rules_deduped_before_call_to_iptables_manager(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_e787e2b2","line":1225,"range":{"start_line":1208,"start_character":0,"end_line":1225,"end_character":51},"updated":"2016-07-07 00:36:37.000000000","message":"nit: It would be nice to squash if/else here. E.g. you can introduce 2 variables for \u002710.0.0.1\u0027/\u0027fe80::1\u0027 and \u002710.0.0.2\u0027/\u0027fe80::2\u0027 IPs and initialise them in the previous if/else block.","commit_id":"ed83ade4d496b7c3fafad8b3647bb800b757ae8e"}]}
