)]}'
{"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76c9be4bf833ef5d3c376c8afd8347b79c959482","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        return iptables_rule"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"},{"line_number":328,"context_line":"        if not (protocol in [\u0027udp\u0027, \u0027tcp\u0027, \u0027icmp\u0027, \u0027icmpv6\u0027]"},{"line_number":329,"context_line":"                and port_range_min):"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FRoA%3D","line":328,"updated":"2014-03-07 05:04:18.000000000","message":"Could you use \"not in\" operator here? (though it is not your code)","commit_id":"1d6fb2dbe7d22fb63612ae21b8369a462274c4bc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7ebfbe8f8af8cc192bf590ce2871748afec74136","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        return iptables_rule"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"},{"line_number":328,"context_line":"        if not (protocol in [\u0027udp\u0027, \u0027tcp\u0027, \u0027icmp\u0027, \u0027icmpv6\u0027]"},{"line_number":329,"context_line":"                and port_range_min):"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FIYw%3D","line":328,"in_reply_to":"AAAAVn%2F%2FRhk%3D","updated":"2014-03-08 15:48:42.000000000","message":"Aga... i missed the second line.","commit_id":"1d6fb2dbe7d22fb63612ae21b8369a462274c4bc"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"d033e0f0f3891700d833f2dacd69510bf52befb4","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        return iptables_rule"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"},{"line_number":328,"context_line":"        if not (protocol in [\u0027udp\u0027, \u0027tcp\u0027, \u0027icmp\u0027, \u0027icmpv6\u0027]"},{"line_number":329,"context_line":"                and port_range_min):"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FRhk%3D","line":328,"in_reply_to":"AAAAVn%2F%2FRoA%3D","updated":"2014-03-07 05:25:44.000000000","message":"In that way I need to change the \"and\" below as well. It will look like:\n\nif (protocol not in [\u0027udp\u0027, \u0027tcp\u0027, \u0027icmp\u0027, \u0027icmpv6\u0027] or not port_range_min): \n\nI agree it looks more straightforward.","commit_id":"1d6fb2dbe7d22fb63612ae21b8369a462274c4bc"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"914bec4c04ac18658fd07d327db79c6cf94711ca","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            if port_range_max:"},{"line_number":334,"context_line":"                return [\u0027--%s-type\u0027 % protocol,"},{"line_number":335,"context_line":"                        \u0027%s/%s\u0027 % (port_range_min, port_range_max)]"},{"line_number":336,"context_line":"            return [\u0027--%s-type\u0027 % protocol, port_range_min]"},{"line_number":337,"context_line":"        elif port_range_min \u003d\u003d port_range_max:"},{"line_number":338,"context_line":"            return [\u0027--%s\u0027 % direction, \u0027%s\u0027 % (port_range_min,)]"},{"line_number":339,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FEPQ%3D","line":336,"updated":"2014-03-10 08:56:46.000000000","message":"Should be port_range_min converted to string here the same way it is on L338? i.e.\n\n return [\u0027--%s-type\u0027 % protocol, \u0027%s\u0027 % port_range_min]\n\nIf it\u0027s not a string here it will crash on L301","commit_id":"9ac19e355724957ef741a789fd6db7fd6bec3128"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"dc4f2ede12c9dac91b3e8a14e682a83962f826a3","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            if port_range_max:"},{"line_number":334,"context_line":"                return [\u0027--%s-type\u0027 % protocol,"},{"line_number":335,"context_line":"                        \u0027%s/%s\u0027 % (port_range_min, port_range_max)]"},{"line_number":336,"context_line":"            return [\u0027--%s-type\u0027 % protocol, port_range_min]"},{"line_number":337,"context_line":"        elif port_range_min \u003d\u003d port_range_max:"},{"line_number":338,"context_line":"            return [\u0027--%s\u0027 % direction, \u0027%s\u0027 % (port_range_min,)]"},{"line_number":339,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B9JE%3D","line":336,"in_reply_to":"AAAAVn%2F%2FEPQ%3D","updated":"2014-03-11 02:47:09.000000000","message":"Will do in next patch. Will change unit test as well.","commit_id":"9ac19e355724957ef741a789fd6db7fd6bec3128"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"361a01c1622954b011e7df67f39871e4ace997b2","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        if protocol in [\u0027icmp\u0027, \u0027icmpv6\u0027]:"},{"line_number":333,"context_line":"            # port_range_max can be 0 when type code is 0, so cannot use"},{"line_number":334,"context_line":"            # if port_range_max"},{"line_number":335,"context_line":"            if port_range_max is not None:"},{"line_number":336,"context_line":"                return [\u0027--%s-type\u0027 % protocol,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FrFo%3D","line":333,"updated":"2014-03-14 15:34:31.000000000","message":"Just a small suggestion: \"type code\" sounds a little bit misleading to me - the reader might not be sure whether you mean \"icmp type\" or \"icmp code\". I would be more specific here and say \"icmp code\".","commit_id":"4f8ed438e8c325de87a78bb8fcb951232f3a4867"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"ec9eedada34546dfee6fea687d2743635c2eda32","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        if protocol in [\u0027icmp\u0027, \u0027icmpv6\u0027]:"},{"line_number":333,"context_line":"            # port_range_max can be 0 when type code is 0, so cannot use"},{"line_number":334,"context_line":"            # if port_range_max"},{"line_number":335,"context_line":"            if port_range_max is not None:"},{"line_number":336,"context_line":"                return [\u0027--%s-type\u0027 % protocol,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FjtM%3D","line":333,"in_reply_to":"AAAAWH%2F%2FpNY%3D","updated":"2014-03-17 02:47:00.000000000","message":"Jakub and Akihiro, thanks for your comments, I will improve this in next patch.","commit_id":"4f8ed438e8c325de87a78bb8fcb951232f3a4867"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76c4d2c39ffd744f1fab944d067085312046ede2","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        if protocol in [\u0027icmp\u0027, \u0027icmpv6\u0027]:"},{"line_number":333,"context_line":"            # port_range_max can be 0 when type code is 0, so cannot use"},{"line_number":334,"context_line":"            # if port_range_max"},{"line_number":335,"context_line":"            if port_range_max is not None:"},{"line_number":336,"context_line":"                return [\u0027--%s-type\u0027 % protocol,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FpNY%3D","line":333,"in_reply_to":"AAAAWH%2F%2FrFo%3D","updated":"2014-03-14 19:21:13.000000000","message":"Agree with Jakub.\n\nAdditional suggestion: it is better to use consistent wording: port_range_min and port_range_max  or   icmp type and icmp code. It is also helpful to note the mapping from port_range_min/max to icmp type/code.","commit_id":"4f8ed438e8c325de87a78bb8fcb951232f3a4867"}],"neutron/tests/unit/test_iptables_firewall.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"676a7bbe86aae9ce3b602d96ed00acf9cf48d537","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                \u0027direction\u0027: \u0027egress\u0027,"},{"line_number":356,"context_line":"                \u0027protocol\u0027: \u0027icmp\u0027,"},{"line_number":357,"context_line":"                \u0027source_port_range_min\u0027: 8,"},{"line_number":358,"context_line":"                \u0027source_port_range_max\u0027: \u00270\u0027,"},{"line_number":359,"context_line":"                \u0027source_ip_prefix\u0027: prefix}"},{"line_number":360,"context_line":"        egress \u003d call.add_rule("},{"line_number":361,"context_line":"            \u0027ofake_dev\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2B7dE%3D","line":358,"updated":"2014-03-11 08:09:47.000000000","message":"Maybe also using int instead of str here would be more convenient.","commit_id":"aff53e95b61386a4af2c5222270f10becbdd7564"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"b7423eed4d81c5907d82c6adeba2b811512b9b88","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                \u0027direction\u0027: \u0027egress\u0027,"},{"line_number":356,"context_line":"                \u0027protocol\u0027: \u0027icmp\u0027,"},{"line_number":357,"context_line":"                \u0027source_port_range_min\u0027: 8,"},{"line_number":358,"context_line":"                \u0027source_port_range_max\u0027: \u00270\u0027,"},{"line_number":359,"context_line":"                \u0027source_ip_prefix\u0027: prefix}"},{"line_number":360,"context_line":"        egress \u003d call.add_rule("},{"line_number":361,"context_line":"            \u0027ofake_dev\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2B41Q%3D","line":358,"in_reply_to":"AAAAVn%2F%2B7dE%3D","updated":"2014-03-12 01:58:32.000000000","message":"Done","commit_id":"aff53e95b61386a4af2c5222270f10becbdd7564"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"676a7bbe86aae9ce3b602d96ed00acf9cf48d537","unresolved":false,"context_lines":[{"line_number":693,"context_line":"                \u0027direction\u0027: \u0027egress\u0027,"},{"line_number":694,"context_line":"                \u0027protocol\u0027: \u0027icmp\u0027,"},{"line_number":695,"context_line":"                \u0027source_port_range_min\u0027: 8,"},{"line_number":696,"context_line":"                \u0027source_port_range_max\u0027: \u00270\u0027,"},{"line_number":697,"context_line":"                \u0027source_ip_prefix\u0027: prefix}"},{"line_number":698,"context_line":"        egress \u003d call.add_rule("},{"line_number":699,"context_line":"            \u0027ofake_dev\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2B7c8%3D","line":696,"updated":"2014-03-11 08:09:47.000000000","message":"Same here.","commit_id":"aff53e95b61386a4af2c5222270f10becbdd7564"}]}
