)]}'
{"dragonflow/controller/common/utils.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        LOG.exception(_LE(\"Failed execute conntrack command %s\"), cmd)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def ethertype_to_ip_version(ethertype):"},{"line_number":99,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":100,"context_line":"        return 4"},{"line_number":101,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_d9acff37","line":98,"updated":"2017-02-28 09:39:17.000000000","message":"Why not use the ip_version_convertor defined above? e.g.:\ntry:\n    return ip_version_convertor[ethertype]\ncatch KeyError:\n    raise excpetion\n?","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"7ffdb36be14d9ba3cd8fa4453c26b15f6ba4e070","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        LOG.exception(_LE(\"Failed execute conntrack command %s\"), cmd)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def ethertype_to_ip_version(ethertype):"},{"line_number":99,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":100,"context_line":"        return 4"},{"line_number":101,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_79578f02","line":98,"in_reply_to":"da36d5c6_d9acff37","updated":"2017-03-01 08:50:15.000000000","message":"I forgot to remove the version converter.\nI thought that a method will be more clear","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"def ethertype_to_ip_version(ethertype):"},{"line_number":86,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":87,"context_line":"        return 4"},{"line_number":88,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"},{"line_number":89,"context_line":"        return 6"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_82ea93a9","line":86,"range":{"start_line":86,"start_character":20,"end_line":86,"end_character":26},"updated":"2017-04-03 02:25:36.000000000","message":"https://github.com/openstack/neutron-lib/blob/master/neutron_lib/constants.py#L81-L84","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"def ethertype_to_ip_version(ethertype):"},{"line_number":86,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":87,"context_line":"        return 4"},{"line_number":88,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"},{"line_number":89,"context_line":"        return 6"},{"line_number":90,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dethertype)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_62d1cffb","line":87,"range":{"start_line":87,"start_character":15,"end_line":87,"end_character":16},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":85,"context_line":"def ethertype_to_ip_version(ethertype):"},{"line_number":86,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":87,"context_line":"        return 4"},{"line_number":88,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"},{"line_number":89,"context_line":"        return 6"},{"line_number":90,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dethertype)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42cc8b60","line":88,"range":{"start_line":88,"start_character":20,"end_line":88,"end_character":26},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    if ethertype \u003d\u003d \"IPv4\":"},{"line_number":87,"context_line":"        return 4"},{"line_number":88,"context_line":"    if ethertype \u003d\u003d \"IPv6\":"},{"line_number":89,"context_line":"        return 6"},{"line_number":90,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dethertype)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_22dbc71b","line":89,"range":{"start_line":89,"start_character":15,"end_line":89,"end_character":16},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/controller/sg_app.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _get_security_rule_by_addresses_match_item(self,"},{"line_number":262,"context_line":"                                                   ethertype,"},{"line_number":263,"context_line":"                                                   flow_direction):"},{"line_number":264,"context_line":"        match_item \u003d \"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if ethertype \u003d\u003d n_const.IPv4:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_94ba4e6d","line":263,"updated":"2017-02-28 09:39:17.000000000","message":"docstring missing (in 3 methods)","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"7ffdb36be14d9ba3cd8fa4453c26b15f6ba4e070","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _get_security_rule_by_addresses_match_item(self,"},{"line_number":262,"context_line":"                                                   ethertype,"},{"line_number":263,"context_line":"                                                   flow_direction):"},{"line_number":264,"context_line":"        match_item \u003d \"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if ethertype \u003d\u003d n_const.IPv4:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_f94e1fc0","line":263,"in_reply_to":"da36d5c6_94ba4e6d","updated":"2017-03-01 08:50:15.000000000","message":"Will add","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                                                   ethertype,"},{"line_number":263,"context_line":"                                                   flow_direction):"},{"line_number":264,"context_line":"        match_item \u003d \"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if ethertype \u003d\u003d n_const.IPv4:"},{"line_number":267,"context_line":"            if flow_direction \u003d\u003d \u0027ingress\u0027:"},{"line_number":268,"context_line":"                match_item \u003d \"ipv4_src\""}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_d45a0650","line":265,"updated":"2017-02-28 09:39:17.000000000","message":"nit: Maybe it will be cleaner to write:\nrules \u003d {\n\t(IPv4, \u0027ingress\u0027): \u0027ipv4_src\u0027,\n\t(IPv4, \u0027egress\u0027): \u0027ipv4_dst\u0027,\n\t(IPv6, \u0027ingress\u0027): \u0027ipv6_src\u0027,\n\t(IPv6, \u0027egress\u0027): \u0027ipv6_dst\u0027,\n}\nreturn rules[(ehtertype, flow_direction)]","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"7ffdb36be14d9ba3cd8fa4453c26b15f6ba4e070","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                                                   ethertype,"},{"line_number":263,"context_line":"                                                   flow_direction):"},{"line_number":264,"context_line":"        match_item \u003d \"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if ethertype \u003d\u003d n_const.IPv4:"},{"line_number":267,"context_line":"            if flow_direction \u003d\u003d \u0027ingress\u0027:"},{"line_number":268,"context_line":"                match_item \u003d \"ipv4_src\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_99d603c4","line":265,"in_reply_to":"da36d5c6_d45a0650","updated":"2017-03-01 08:50:15.000000000","message":"Will fix","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                         inst\u003dNone, command\u003dNone):"},{"line_number":303,"context_line":"        parser \u003d self.parser"},{"line_number":304,"context_line":"        for cidr_item in addresses_list:"},{"line_number":305,"context_line":"            if (cidr_item is \"\") or netaddr.IPNetwork(cidr_item).version \u003d\u003d \\"},{"line_number":306,"context_line":"                    utils.ethertype_to_ip_version(ethertype):"},{"line_number":307,"context_line":"                for match_item in match_list:"},{"line_number":308,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_df0f7f2c","line":305,"range":{"start_line":305,"start_character":76,"end_line":305,"end_character":77},"updated":"2017-02-28 09:39:17.000000000","message":"It is preferable to use brackets than backslash for multi-line expressions.","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"7ffdb36be14d9ba3cd8fa4453c26b15f6ba4e070","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                         inst\u003dNone, command\u003dNone):"},{"line_number":303,"context_line":"        parser \u003d self.parser"},{"line_number":304,"context_line":"        for cidr_item in addresses_list:"},{"line_number":305,"context_line":"            if (cidr_item is \"\") or netaddr.IPNetwork(cidr_item).version \u003d\u003d \\"},{"line_number":306,"context_line":"                    utils.ethertype_to_ip_version(ethertype):"},{"line_number":307,"context_line":"                for match_item in match_list:"},{"line_number":308,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_f9e53fa8","line":305,"range":{"start_line":305,"start_character":76,"end_line":305,"end_character":77},"in_reply_to":"da36d5c6_df0f7f2c","updated":"2017-03-01 08:50:15.000000000","message":"Will fix","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                for match_item in match_list:"},{"line_number":308,"context_line":"                    parameters_merge \u003d match_item.copy()"},{"line_number":309,"context_line":"                    if (cidr_item is not \"\"):"},{"line_number":310,"context_line":"                        parameters_merge[ip_match_item] \u003d \\"},{"line_number":311,"context_line":"                            SGApp._get_network_and_mask(cidr_item)"},{"line_number":312,"context_line":"                    match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":313,"context_line":"                    if ethertype \u003d\u003d n_const.IPv6:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_3f25fbad","line":310,"range":{"start_line":310,"start_character":58,"end_line":310,"end_character":59},"updated":"2017-02-28 09:39:17.000000000","message":"Here there is no choice, so can stay as is","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"cb9d80b5cb8f388c264d6dfd11136aef6382fc5b","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                        parameters_merge[ip_match_item] \u003d \\"},{"line_number":311,"context_line":"                            SGApp._get_network_and_mask(cidr_item)"},{"line_number":312,"context_line":"                    match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":313,"context_line":"                    if ethertype \u003d\u003d n_const.IPv6:"},{"line_number":314,"context_line":"                        match.set_dl_type(ether.ETH_TYPE_IPV6)"},{"line_number":315,"context_line":"                    cookie, cookie_mask \u003d self._get_rule_cookie(rule_id)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    self.mod_flow("}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_df921f9f","line":314,"range":{"start_line":313,"start_character":0,"end_line":314,"end_character":62},"updated":"2017-02-28 09:39:17.000000000","message":"How come you don\u0027t need this for IPv4?","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"7ffdb36be14d9ba3cd8fa4453c26b15f6ba4e070","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                        parameters_merge[ip_match_item] \u003d \\"},{"line_number":311,"context_line":"                            SGApp._get_network_and_mask(cidr_item)"},{"line_number":312,"context_line":"                    match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":313,"context_line":"                    if ethertype \u003d\u003d n_const.IPv6:"},{"line_number":314,"context_line":"                        match.set_dl_type(ether.ETH_TYPE_IPV6)"},{"line_number":315,"context_line":"                    cookie, cookie_mask \u003d self._get_rule_cookie(rule_id)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    self.mod_flow("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_d96a3b1a","line":314,"range":{"start_line":313,"start_character":0,"end_line":314,"end_character":62},"in_reply_to":"da36d5c6_df921f9f","updated":"2017-03-01 08:50:15.000000000","message":"Forgot to remove it. The type is already set in _get_rule_flows_match_except_nat_addresses","commit_id":"849fdbeaf421ea750b9d63bbf6964ffd259b8b5d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"449264a7a8ee1cd8cfc931d2f4310d4d68d69b60","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        return added_ips, removed_ips"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def _get_security_rule_by_addresses_match_item(self,"},{"line_number":268,"context_line":"                                                   ethertype,"},{"line_number":269,"context_line":"                                                   flow_direction):"},{"line_number":270,"context_line":"        \"\"\""},{"line_number":271,"context_line":"        Returns the match_item that should be matched in the flow"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        :param ethertype: The ethernet type relevant to the flow {IPv4 | IPv6}"},{"line_number":274,"context_line":"        :param flow_direction: The fidirection of the flow {ingress | egress}"},{"line_number":275,"context_line":"        \"\"\""},{"line_number":276,"context_line":"        match_items \u003d {"},{"line_number":277,"context_line":"            (n_const.IPv4, \u0027ingress\u0027): \u0027ipv4_src\u0027,"},{"line_number":278,"context_line":"            (n_const.IPv4, \u0027egress\u0027): \u0027ipv4_dst\u0027,"},{"line_number":279,"context_line":"            (n_const.IPv6, \u0027ingress\u0027): \u0027ipv6_src\u0027,"},{"line_number":280,"context_line":"            (n_const.IPv6, \u0027egress\u0027): \u0027ipv6_dst\u0027"},{"line_number":281,"context_line":"        }"},{"line_number":282,"context_line":"        return match_items.get((ethertype, flow_direction))"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def _install_ipv4_ipv6_rules(self, table_id, match_items, priority\u003d0xff,"},{"line_number":285,"context_line":"                                 command\u003dNone, inst\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_5a7d411b","line":282,"range":{"start_line":267,"start_character":0,"end_line":282,"end_character":59},"updated":"2017-03-19 11:20:02.000000000","message":"nit: This might as well be a function or at least a @classmethod","commit_id":"37148e8ac27f2d2e163099370f4979217e6d5cd1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"3e3453681e545b01a13b0caa12c38d8de21d070d","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        return added_ips, removed_ips"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def _get_security_rule_by_addresses_match_item(self,"},{"line_number":268,"context_line":"                                                   ethertype,"},{"line_number":269,"context_line":"                                                   flow_direction):"},{"line_number":270,"context_line":"        \"\"\""},{"line_number":271,"context_line":"        Returns the match_item that should be matched in the flow"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        :param ethertype: The ethernet type relevant to the flow {IPv4 | IPv6}"},{"line_number":274,"context_line":"        :param flow_direction: The fidirection of the flow {ingress | egress}"},{"line_number":275,"context_line":"        \"\"\""},{"line_number":276,"context_line":"        match_items \u003d {"},{"line_number":277,"context_line":"            (n_const.IPv4, \u0027ingress\u0027): \u0027ipv4_src\u0027,"},{"line_number":278,"context_line":"            (n_const.IPv4, \u0027egress\u0027): \u0027ipv4_dst\u0027,"},{"line_number":279,"context_line":"            (n_const.IPv6, \u0027ingress\u0027): \u0027ipv6_src\u0027,"},{"line_number":280,"context_line":"            (n_const.IPv6, \u0027egress\u0027): \u0027ipv6_dst\u0027"},{"line_number":281,"context_line":"        }"},{"line_number":282,"context_line":"        return match_items.get((ethertype, flow_direction))"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def _install_ipv4_ipv6_rules(self, table_id, match_items, priority\u003d0xff,"},{"line_number":285,"context_line":"                                 command\u003dNone, inst\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_45af2694","line":282,"range":{"start_line":267,"start_character":0,"end_line":282,"end_character":59},"in_reply_to":"1a1ced50_5a7d411b","updated":"2017-03-22 09:53:47.000000000","message":"Done","commit_id":"37148e8ac27f2d2e163099370f4979217e6d5cd1"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"449264a7a8ee1cd8cfc931d2f4310d4d68d69b60","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        parser \u003d self.parser"},{"line_number":342,"context_line":"        for cidr_item in addresses_list:"},{"line_number":343,"context_line":"            if ((cidr_item is \"\") or netaddr.IPNetwork(cidr_item).version \u003d\u003d"},{"line_number":344,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":345,"context_line":"                for match_item in match_list:"},{"line_number":346,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_fa07cd7e","line":343,"range":{"start_line":343,"start_character":17,"end_line":343,"end_character":33},"updated":"2017-03-19 11:20:02.000000000","message":"I think comparing strings with \u003d\u003d is better. I could not find an example with a zero-length string that breaks, but this one does:\n\n\u003e\u003e\u003e \u0027012\u0027[1:] is \u002712\u0027\nFalse","commit_id":"37148e8ac27f2d2e163099370f4979217e6d5cd1"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"449264a7a8ee1cd8cfc931d2f4310d4d68d69b60","unresolved":false,"context_lines":[{"line_number":645,"context_line":"            table_id \u003d const.EGRESS_SECURITY_GROUP_TABLE"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        ip_match_item \u003d self._get_security_rule_by_addresses_match_item("},{"line_number":648,"context_line":"                                ethertype,"},{"line_number":649,"context_line":"                                secgroup_rule.get_direction())"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        if not ip_match_item:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_7af4bd86","line":648,"range":{"start_line":648,"start_character":13,"end_line":648,"end_character":32},"updated":"2017-03-19 11:20:02.000000000","message":"indentation","commit_id":"37148e8ac27f2d2e163099370f4979217e6d5cd1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                            requested actions."},{"line_number":299,"context_line":"        \"\"\""},{"line_number":300,"context_line":"        parser \u003d self.parser"},{"line_number":301,"context_line":"        match_v4 \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":302,"context_line":"                                   **match_items)"},{"line_number":303,"context_line":"        match_v6 \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IPV6,"},{"line_number":304,"context_line":"                                   **match_items)"},{"line_number":305,"context_line":"        self.mod_flow("},{"line_number":306,"context_line":"            inst\u003dinst,"},{"line_number":307,"context_line":"            table_id\u003dtable_id,"},{"line_number":308,"context_line":"            priority\u003dpriority,"},{"line_number":309,"context_line":"            match\u003dmatch_v4,"},{"line_number":310,"context_line":"            command\u003dcommand)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mod_flow("},{"line_number":313,"context_line":"            inst\u003dinst,"},{"line_number":314,"context_line":"            table_id\u003dtable_id,"},{"line_number":315,"context_line":"            priority\u003dpriority,"},{"line_number":316,"context_line":"            match\u003dmatch_v6,"},{"line_number":317,"context_line":"            command\u003dcommand)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _install_flows_from_address_list(self, addresses_list, ethertype,"},{"line_number":320,"context_line":"                                         table_id, match_list, rule_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_913778b1","line":317,"range":{"start_line":301,"start_character":0,"end_line":317,"end_character":28},"updated":"2017-03-27 02:40:42.000000000","message":"nit: this could be:\n\nfor ip_version in (ether.ETH_TYPE_IP, ether.ETH_TYPE_IPV6):\n    self.mod_flow(\n            inst\u003dinst,\n            table_id\u003dtable_id,\n            priority\u003dpriority,\n            match\u003dparser.OFPMatch(eth_type\u003dip_version,\n                                   **match_items),\n            command\u003dcommand)","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                            requested actions."},{"line_number":299,"context_line":"        \"\"\""},{"line_number":300,"context_line":"        parser \u003d self.parser"},{"line_number":301,"context_line":"        match_v4 \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":302,"context_line":"                                   **match_items)"},{"line_number":303,"context_line":"        match_v6 \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IPV6,"},{"line_number":304,"context_line":"                                   **match_items)"},{"line_number":305,"context_line":"        self.mod_flow("},{"line_number":306,"context_line":"            inst\u003dinst,"},{"line_number":307,"context_line":"            table_id\u003dtable_id,"},{"line_number":308,"context_line":"            priority\u003dpriority,"},{"line_number":309,"context_line":"            match\u003dmatch_v4,"},{"line_number":310,"context_line":"            command\u003dcommand)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mod_flow("},{"line_number":313,"context_line":"            inst\u003dinst,"},{"line_number":314,"context_line":"            table_id\u003dtable_id,"},{"line_number":315,"context_line":"            priority\u003dpriority,"},{"line_number":316,"context_line":"            match\u003dmatch_v6,"},{"line_number":317,"context_line":"            command\u003dcommand)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _install_flows_from_address_list(self, addresses_list, ethertype,"},{"line_number":320,"context_line":"                                         table_id, match_list, rule_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_54babe09","line":317,"range":{"start_line":301,"start_character":0,"end_line":317,"end_character":28},"in_reply_to":"ffe62b97_913778b1","updated":"2017-03-28 07:56:46.000000000","message":"Will change","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        \"\"\""},{"line_number":324,"context_line":"        Installs rule\u0027s flows for each relevant IP address"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        :param address_list: a list of IPs ehich should be filtered by the rule"},{"line_number":327,"context_line":"        :param ethertype:    the rule\u0027s ethertype {IPv4 | IPv6}"},{"line_number":328,"context_line":"        :param table_id:     the table in which the flows will be installed"},{"line_number":329,"context_line":"        :param match_list:   a list of fields names and values,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_31442c1b","line":326,"range":{"start_line":326,"start_character":43,"end_line":326,"end_character":48},"updated":"2017-03-27 02:40:42.000000000","message":"each?","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        \"\"\""},{"line_number":324,"context_line":"        Installs rule\u0027s flows for each relevant IP address"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        :param address_list: a list of IPs ehich should be filtered by the rule"},{"line_number":327,"context_line":"        :param ethertype:    the rule\u0027s ethertype {IPv4 | IPv6}"},{"line_number":328,"context_line":"        :param table_id:     the table in which the flows will be installed"},{"line_number":329,"context_line":"        :param match_list:   a list of fields names and values,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_143e768b","line":326,"range":{"start_line":326,"start_character":43,"end_line":326,"end_character":48},"in_reply_to":"ffe62b97_31442c1b","updated":"2017-03-28 07:56:46.000000000","message":"Yes. Thanks","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        parser \u003d self.parser"},{"line_number":342,"context_line":"        for cidr_item in addresses_list:"},{"line_number":343,"context_line":"            if ((cidr_item is \"\") or netaddr.IPNetwork(cidr_item).version \u003d\u003d"},{"line_number":344,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":345,"context_line":"                for match_item in match_list:"},{"line_number":346,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_b1683c87","line":343,"range":{"start_line":343,"start_character":16,"end_line":343,"end_character":33},"updated":"2017-03-27 02:40:42.000000000","message":"nit: the parentheses are not required here. Or you can just use:\n\nif not cidr_item or .....","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        parser \u003d self.parser"},{"line_number":342,"context_line":"        for cidr_item in addresses_list:"},{"line_number":343,"context_line":"            if ((cidr_item is \"\") or netaddr.IPNetwork(cidr_item).version \u003d\u003d"},{"line_number":344,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":345,"context_line":"                for match_item in match_list:"},{"line_number":346,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_d4436e12","line":343,"range":{"start_line":343,"start_character":16,"end_line":343,"end_character":33},"in_reply_to":"ffe62b97_b1683c87","updated":"2017-03-28 07:56:46.000000000","message":"Will fix","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":345,"context_line":"                for match_item in match_list:"},{"line_number":346,"context_line":"                    parameters_merge \u003d match_item.copy()"},{"line_number":347,"context_line":"                    if (cidr_item is not \"\"):"},{"line_number":348,"context_line":"                        parameters_merge[ip_match_item] \u003d \\"},{"line_number":349,"context_line":"                            SGApp._get_network_and_mask(cidr_item)"},{"line_number":350,"context_line":"                    match \u003d parser.OFPMatch(**parameters_merge)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_910538c5","line":347,"range":{"start_line":347,"start_character":23,"end_line":347,"end_character":44},"updated":"2017-03-27 02:40:42.000000000","message":"ditto","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":345,"context_line":"                for match_item in match_list:"},{"line_number":346,"context_line":"                    parameters_merge \u003d match_item.copy()"},{"line_number":347,"context_line":"                    if (cidr_item is not \"\"):"},{"line_number":348,"context_line":"                        parameters_merge[ip_match_item] \u003d \\"},{"line_number":349,"context_line":"                            SGApp._get_network_and_mask(cidr_item)"},{"line_number":350,"context_line":"                    match \u003d parser.OFPMatch(**parameters_merge)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_b44c6a42","line":347,"range":{"start_line":347,"start_character":23,"end_line":347,"end_character":44},"in_reply_to":"ffe62b97_910538c5","updated":"2017-03-28 07:56:46.000000000","message":"Will fix","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                priority\u003dpriority,"},{"line_number":617,"context_line":"                rule_id\u003drule_id,"},{"line_number":618,"context_line":"                ip_match_item\u003dip_match_item,"},{"line_number":619,"context_line":"                match_list\u003dmatch_list)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        self._install_flows_from_address_list("},{"line_number":622,"context_line":"                addresses_list\u003dremoved_cidr,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_f1ca446c","line":619,"range":{"start_line":619,"start_character":0,"end_line":619,"end_character":38},"updated":"2017-03-27 02:40:42.000000000","message":"I think it is better to add the command here explicitly. What do you think?","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                priority\u003dpriority,"},{"line_number":617,"context_line":"                rule_id\u003drule_id,"},{"line_number":618,"context_line":"                ip_match_item\u003dip_match_item,"},{"line_number":619,"context_line":"                match_list\u003dmatch_list)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        self._install_flows_from_address_list("},{"line_number":622,"context_line":"                addresses_list\u003dremoved_cidr,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_d45c8eee","line":619,"range":{"start_line":619,"start_character":0,"end_line":619,"end_character":38},"in_reply_to":"ffe62b97_f1ca446c","updated":"2017-03-28 07:56:46.000000000","message":"I could help make this code a bit understood :) Will add.","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                                              priority\u003dpriority,"},{"line_number":686,"context_line":"                                              rule_id\u003drule_id,"},{"line_number":687,"context_line":"                                              ip_match_item\u003dip_match_item,"},{"line_number":688,"context_line":"                                              match_list\u003dmatch_list)"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"    def _uninstall_security_group_rule_flows(self, secgroup_rule):"},{"line_number":691,"context_line":"        # uninstall rule flows by its cookie"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_1195a840","line":688,"range":{"start_line":688,"start_character":0,"end_line":688,"end_character":68},"updated":"2017-03-27 02:40:42.000000000","message":"ditto","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                                              priority\u003dpriority,"},{"line_number":686,"context_line":"                                              rule_id\u003drule_id,"},{"line_number":687,"context_line":"                                              ip_match_item\u003dip_match_item,"},{"line_number":688,"context_line":"                                              match_list\u003dmatch_list)"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"    def _uninstall_security_group_rule_flows(self, secgroup_rule):"},{"line_number":691,"context_line":"        # uninstall rule flows by its cookie"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_746b8284","line":688,"range":{"start_line":688,"start_character":0,"end_line":688,"end_character":68},"in_reply_to":"ffe62b97_1195a840","updated":"2017-03-28 07:56:46.000000000","message":"same","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"12b041e942f53f7f54cd5c89908001d15fe6f1d5","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        \"\"\""},{"line_number":330,"context_line":"        parser \u003d self.parser"},{"line_number":331,"context_line":"        for cidr_item in addresses_list:"},{"line_number":332,"context_line":"            if ((not cidr_item) or netaddr.IPNetwork(cidr_item).version \u003d\u003d"},{"line_number":333,"context_line":"                    utils.ethertype_to_ip_version(ethertype)):"},{"line_number":334,"context_line":"                for match_item in match_list:"},{"line_number":335,"context_line":"                    parameters_merge \u003d match_item.copy()"}],"source_content_type":"text/x-python","patch_set":17,"id":"ffe62b97_e31e560a","line":332,"range":{"start_line":332,"start_character":16,"end_line":332,"end_character":31},"updated":"2017-03-30 00:46:27.000000000","message":"nit: The parentheses are not required here.","commit_id":"a12493c95d366b5ab1dc3901d7f23d267e133645"}],"dragonflow/tests/common/app_testing_objects.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":747,"context_line":""},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"class RyuICMPFilter(object):"},{"line_number":750,"context_line":"    def __init__(self, ethertype\u003d\"IPv4\"):"},{"line_number":751,"context_line":"        super(RyuICMPFilter, self).__init__()"},{"line_number":752,"context_line":"        self.ethertype \u003d ethertype"},{"line_number":753,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42f5ab82","line":750,"range":{"start_line":750,"start_character":33,"end_line":750,"end_character":39},"updated":"2017-04-03 02:25:36.000000000","message":"neutron-lib constants","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def __call__(self, buf):"},{"line_number":755,"context_line":"        pkt \u003d packet.Packet(buf)"},{"line_number":756,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":757,"context_line":"            pkt_icmp_protocol \u003d pkt.get_protocol(icmp.icmp)"},{"line_number":758,"context_line":"        else:"},{"line_number":759,"context_line":"            pkt_icmp_protocol \u003d pkt.get_protocol(icmpv6.icmpv6)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_22f4e785","line":756,"range":{"start_line":756,"start_character":29,"end_line":756,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":780,"context_line":"    :param get_ping:    Return an object contained the original echo request"},{"line_number":781,"context_line":"    :type get_ping:     Callable with no arguments."},{"line_number":782,"context_line":"    \"\"\""},{"line_number":783,"context_line":"    def __init__(self, get_ping\u003dNone, ethertype\u003d\"IPv4\"):"},{"line_number":784,"context_line":"        super(RyuICMPPingFilter, self).__init__()"},{"line_number":785,"context_line":"        self.get_ping \u003d get_ping"},{"line_number":786,"context_line":"        self.ethertype \u003d ethertype"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_02efa3b0","line":783,"range":{"start_line":783,"start_character":48,"end_line":783,"end_character":54},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        self.ethertype \u003d ethertype"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def filter_icmp(self, pkt, proto):"},{"line_number":789,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":790,"context_line":"            icmp_req \u003d icmp.ICMP_ECHO_REQUEST"},{"line_number":791,"context_line":"            proto_type \u003d proto.type"},{"line_number":792,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_e22b9fe8","line":789,"range":{"start_line":789,"start_character":29,"end_line":789,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":808,"context_line":"    :param get_ping:    Return an object contained the original echo request"},{"line_number":809,"context_line":"    :type get_ping:     Callable with no arguments."},{"line_number":810,"context_line":"    \"\"\""},{"line_number":811,"context_line":"    def __init__(self, get_ping, ethertype\u003d\"IPv4\"):"},{"line_number":812,"context_line":"        super(RyuICMPPongFilter, self).__init__()"},{"line_number":813,"context_line":"        self.get_ping \u003d get_ping"},{"line_number":814,"context_line":"        self.ethertype \u003d ethertype"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c22e5bf9","line":811,"range":{"start_line":811,"start_character":43,"end_line":811,"end_character":49},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":814,"context_line":"        self.ethertype \u003d ethertype"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def filter_icmp(self, pkt, icmp_prot):"},{"line_number":817,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":818,"context_line":"            icmp_req \u003d icmp.ICMP_ECHO_REPLY"},{"line_number":819,"context_line":"            proto_type \u003d icmp_prot.type"},{"line_number":820,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_a2359748","line":817,"range":{"start_line":817,"start_character":29,"end_line":817,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/tests/common/utils.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def ip_version_to_ethertype(ip_version):"},{"line_number":98,"context_line":"    if ip_version \u003d\u003d 4:"},{"line_number":99,"context_line":"        return \"IPv4\""},{"line_number":100,"context_line":"    if ip_version \u003d\u003d 6:"},{"line_number":101,"context_line":"        return \"IPv6\""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_8238533d","line":98,"range":{"start_line":98,"start_character":21,"end_line":98,"end_character":22},"updated":"2017-04-03 02:25:36.000000000","message":"neutron-lib constants","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def ip_version_to_ethertype(ip_version):"},{"line_number":98,"context_line":"    if ip_version \u003d\u003d 4:"},{"line_number":99,"context_line":"        return \"IPv4\""},{"line_number":100,"context_line":"    if ip_version \u003d\u003d 6:"},{"line_number":101,"context_line":"        return \"IPv6\""},{"line_number":102,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dip_version)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_623f8f25","line":99,"range":{"start_line":99,"start_character":15,"end_line":99,"end_character":21},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":97,"context_line":"def ip_version_to_ethertype(ip_version):"},{"line_number":98,"context_line":"    if ip_version \u003d\u003d 4:"},{"line_number":99,"context_line":"        return \"IPv4\""},{"line_number":100,"context_line":"    if ip_version \u003d\u003d 6:"},{"line_number":101,"context_line":"        return \"IPv6\""},{"line_number":102,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dip_version)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_224987cf","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":22},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    if ip_version \u003d\u003d 4:"},{"line_number":99,"context_line":"        return \"IPv4\""},{"line_number":100,"context_line":"    if ip_version \u003d\u003d 6:"},{"line_number":101,"context_line":"        return \"IPv6\""},{"line_number":102,"context_line":"    raise exceptions.InvalidEtherTypeException(ethertype\u003dip_version)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_e214bfa2","line":101,"range":{"start_line":101,"start_character":15,"end_line":101,"end_character":21},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/tests/fullstack/test_apps.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"        self.assertIsNotNone(port2_lport)"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"    def _setup_groups_rules(self, cidr):"},{"line_number":1181,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":1182,"context_line":"            icmp_type \u003d \u0027icmp\u0027"},{"line_number":1183,"context_line":"        else:"},{"line_number":1184,"context_line":"            icmp_type \u003d \u0027icmpv6\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_821173af","line":1181,"range":{"start_line":1181,"start_character":29,"end_line":1181,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"neutron-lib constants","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"    def _setup_groups_rules(self, cidr):"},{"line_number":1181,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":1182,"context_line":"            icmp_type \u003d \u0027icmp\u0027"},{"line_number":1183,"context_line":"        else:"},{"line_number":1184,"context_line":"            icmp_type \u003d \u0027icmpv6\u0027"},{"line_number":1185,"context_line":"        egress_rule_info \u003d {\u0027ethertype\u0027: self.ethertype,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_6228afe1","line":1182,"range":{"start_line":1182,"start_character":24,"end_line":1182,"end_character":30},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":1182,"context_line":"            icmp_type \u003d \u0027icmp\u0027"},{"line_number":1183,"context_line":"        else:"},{"line_number":1184,"context_line":"            icmp_type \u003d \u0027icmpv6\u0027"},{"line_number":1185,"context_line":"        egress_rule_info \u003d {\u0027ethertype\u0027: self.ethertype,"},{"line_number":1186,"context_line":"                            \u0027direction\u0027: \u0027egress\u0027,"},{"line_number":1187,"context_line":"                            \u0027protocol\u0027: icmp_type}"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42236b06","line":1184,"range":{"start_line":1184,"start_character":24,"end_line":1184,"end_character":32},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"        }"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    def _create_packet_protocol(self, src_ip, dst_ip):"},{"line_number":1407,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":1408,"context_line":"            ip \u003d ryu.lib.packet.ipv4.ipv4("},{"line_number":1409,"context_line":"                src\u003dsrc_ip,"},{"line_number":1410,"context_line":"                dst\u003ddst_ip,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_e2795ffc","line":1407,"range":{"start_line":1407,"start_character":29,"end_line":1407,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1482,"context_line":"            self.port1.port.get_logical_port().get_ip()"},{"line_number":1483,"context_line":"        )"},{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"        if self.ethertype \u003d\u003d \"IPv4\":"},{"line_number":1486,"context_line":"            icmp.type \u003d self.icmp_echo_reply"},{"line_number":1487,"context_line":"        else:"},{"line_number":1488,"context_line":"            icmp.type_ \u003d self.icmp_echo_reply"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c27c1bed","line":1485,"range":{"start_line":1485,"start_character":29,"end_line":1485,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        super(TestSGAppIpv4, self).setUp()"},{"line_number":1564,"context_line":"        try:"},{"line_number":1565,"context_line":"            # Add IPv4 Network"},{"line_number":1566,"context_line":"            self.ethertype \u003d \"IPv4\""},{"line_number":1567,"context_line":"            cidr_ipv4 \u003d \u0027192.168.14.0/24\u0027"},{"line_number":1568,"context_line":"            self.subnet \u003d self.topology.create_subnet(cidr\u003dcidr_ipv4)"},{"line_number":1569,"context_line":"            self._setup_subnet(cidr\u003dcidr_ipv4)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_a28357cc","line":1566,"range":{"start_line":1566,"start_character":29,"end_line":1566,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":1600,"context_line":"        try:"},{"line_number":1601,"context_line":"            # Add IPv6 nodes"},{"line_number":1602,"context_line":"            cidr_ipv6 \u003d \u00271111::/64\u0027"},{"line_number":1603,"context_line":"            self.ethertype \u003d \"IPv6\""},{"line_number":1604,"context_line":"            self.subnet \u003d self.topology.create_subnet(cidr\u003dcidr_ipv6)"},{"line_number":1605,"context_line":"            self._setup_subnet(cidr\u003dcidr_ipv6)"},{"line_number":1606,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_828613db","line":1603,"range":{"start_line":1603,"start_character":29,"end_line":1603,"end_character":35},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/tests/fullstack/test_sg_flows.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                 ovs.get_ovs_flows(self.integration_bridge))"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # Check if the rule flows were installed."},{"line_number":381,"context_line":"        if ethertype \u003d\u003d \"IPv4\":"},{"line_number":382,"context_line":"            expected_ingress_match \u003d \"tcp,nw_src\u003d{}\".format(network_obj)"},{"line_number":383,"context_line":"        elif ethertype \u003d\u003d \"IPv6\":"},{"line_number":384,"context_line":"            expected_ingress_match \u003d \"tcp6,ipv6_src\u003d{}\".format(network_obj)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42680b20","line":381,"range":{"start_line":381,"start_character":24,"end_line":381,"end_character":30},"updated":"2017-04-03 02:25:36.000000000","message":"neutron-lib constants","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        # Check if the rule flows were installed."},{"line_number":381,"context_line":"        if ethertype \u003d\u003d \"IPv4\":"},{"line_number":382,"context_line":"            expected_ingress_match \u003d \"tcp,nw_src\u003d{}\".format(network_obj)"},{"line_number":383,"context_line":"        elif ethertype \u003d\u003d \"IPv6\":"},{"line_number":384,"context_line":"            expected_ingress_match \u003d \"tcp6,ipv6_src\u003d{}\".format(network_obj)"},{"line_number":385,"context_line":"        expected_ingress_match +\u003d \",tp_dst\u003d0x50/0xfffe\""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_02720312","line":383,"range":{"start_line":383,"start_character":26,"end_line":383,"end_character":32},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        # Calculate vm1, vm2 network"},{"line_number":388,"context_line":"        vms_ip_set \u003d netaddr.IPSet([vm1_ip, vm2_ip])"},{"line_number":389,"context_line":"        vms_ip_set.compact()"},{"line_number":390,"context_line":"        if ethertype \u003d\u003d \"IPv4\":"},{"line_number":391,"context_line":"            expected_egress_match \u003d \"udp,nw_dst\u003d{}\".format(vms_ip_set.pop())"},{"line_number":392,"context_line":"        elif ethertype \u003d\u003d \"IPv6\":"},{"line_number":393,"context_line":"            expected_egress_match \u003d \"udp6,ipv6_dst\u003d{}\".format(vms_ip_set.pop())"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c2653b47","line":390,"range":{"start_line":390,"start_character":24,"end_line":390,"end_character":30},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        vms_ip_set.compact()"},{"line_number":390,"context_line":"        if ethertype \u003d\u003d \"IPv4\":"},{"line_number":391,"context_line":"            expected_egress_match \u003d \"udp,nw_dst\u003d{}\".format(vms_ip_set.pop())"},{"line_number":392,"context_line":"        elif ethertype \u003d\u003d \"IPv6\":"},{"line_number":393,"context_line":"            expected_egress_match \u003d \"udp6,ipv6_dst\u003d{}\".format(vms_ip_set.pop())"},{"line_number":394,"context_line":"        expected_egress_match +\u003d \",tp_dst\u003d53\""},{"line_number":395,"context_line":"        self._check_rule_flows(flows, expected_ingress_match,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_825f3371","line":392,"range":{"start_line":392,"start_character":26,"end_line":392,"end_character":32},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        subnet_info \u003d {\u0027cidr\u0027: \u0027192.168.123.0/24\u0027,"},{"line_number":414,"context_line":"                       \u0027gateway_ip\u0027: \u0027192.168.123.1\u0027,"},{"line_number":415,"context_line":"                       \u0027ip_version\u0027: 4,"},{"line_number":416,"context_line":"                       \u0027name\u0027: \u0027test_subnet1\u0027,"},{"line_number":417,"context_line":"                       \u0027enable_dhcp\u0027: True}"},{"line_number":418,"context_line":"        self._test_associating_flows(subnet_info\u003dsubnet_info)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_62566f5f","line":415,"range":{"start_line":415,"start_character":37,"end_line":415,"end_character":38},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        subnet_info \u003d {\u0027cidr\u0027: \u00271111:1111::/64\u0027,"},{"line_number":423,"context_line":"                       \u0027gateway_ip\u0027: \u00271111:1111::1\u0027,"},{"line_number":424,"context_line":"                       \u0027ip_version\u0027: 6,"},{"line_number":425,"context_line":"                       \u0027name\u0027: \u0027test_subnet1\u0027,"},{"line_number":426,"context_line":"                       \u0027enable_dhcp\u0027: True}"},{"line_number":427,"context_line":"        self._test_associating_flows(subnet_info\u003dsubnet_info)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42512b62","line":424,"range":{"start_line":424,"start_character":37,"end_line":424,"end_character":38},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":"    def test_rule_ipv4_flows(self):"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        subnet_info \u003d {\u0027ip_version\u0027: 4,"},{"line_number":432,"context_line":"                       \u0027cidr\u0027: \u0027192.168.124.0/24\u0027,"},{"line_number":433,"context_line":"                       \u0027name\u0027: \u0027test_subnet4\u0027,"},{"line_number":434,"context_line":"                       \u0027enable_dhcp\u0027: True}"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_2250675d","line":431,"range":{"start_line":431,"start_character":37,"end_line":431,"end_character":38},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    def test_rule_ipv6_flows(self):"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        subnet_info \u003d {\u0027ip_version\u0027: 6,"},{"line_number":440,"context_line":"                       \u0027cidr\u0027: \u00271111::/64\u0027,"},{"line_number":441,"context_line":"                       \u0027name\u0027: \u0027test_subnet5\u0027,"},{"line_number":442,"context_line":"                       \u0027enable_dhcp\u0027: True}"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_024b23b0","line":439,"range":{"start_line":439,"start_character":37,"end_line":439,"end_character":38},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/tests/unit/test_app_base.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":343,"context_line":"               \"id\": \"fake_security_group_rule_1\"},"},{"line_number":344,"context_line":"              {\"direction\": \"ingress\","},{"line_number":345,"context_line":"               \"security_group_id\": \"fake_security_group_id1\","},{"line_number":346,"context_line":"               \"ethertype\": \"IPv4\","},{"line_number":347,"context_line":"               \"topic\": \"fake_tenant1\","},{"line_number":348,"context_line":"               \"port_range_max\": None,"},{"line_number":349,"context_line":"               \"port_range_min\": None,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42d6cbc5","line":346,"range":{"start_line":346,"start_character":28,"end_line":346,"end_character":34},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":353,"context_line":"               \"id\": \"fake_security_group_rule_2\"},"},{"line_number":354,"context_line":"              {\"direction\": \"egress\","},{"line_number":355,"context_line":"               \"security_group_id\": \"fake_security_group_id1\","},{"line_number":356,"context_line":"               \"ethertype\": \"IPv6\","},{"line_number":357,"context_line":"               \"topic\": \"fake_tenant1\","},{"line_number":358,"context_line":"               \"port_range_max\": 53,"},{"line_number":359,"context_line":"               \"port_range_min\": 53,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_62db0fed","line":356,"range":{"start_line":356,"start_character":28,"end_line":356,"end_character":34},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":363,"context_line":"               \"id\": \"fake_security_group_rule_3\"},"},{"line_number":364,"context_line":"              {\"direction\": \"ingress\","},{"line_number":365,"context_line":"               \"security_group_id\": \"fake_security_group_id1\","},{"line_number":366,"context_line":"               \"ethertype\": \"IPv6\","},{"line_number":367,"context_line":"               \"topic\": \"fake_tenant1\","},{"line_number":368,"context_line":"               \"port_range_max\": None,"},{"line_number":369,"context_line":"               \"port_range_min\": None,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_22e507a9","line":366,"range":{"start_line":366,"start_character":28,"end_line":366,"end_character":34},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}],"dragonflow/tests/unit/test_sg_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # add local port one"},{"line_number":158,"context_line":"        self.controller.update_lport(self.fake_local_lport)"},{"line_number":159,"context_line":"        # add flows:"},{"line_number":160,"context_line":"        # 1. a flow in ingress conntrack table (ipv4)"},{"line_number":161,"context_line":"        # 2. a flow in ingress conntrack table (ipv6)"},{"line_number":162,"context_line":"        # 3. a associating flow (conjunction) in ingress secgroup table (ipv4)"},{"line_number":163,"context_line":"        # 4. a associating flow (conjunction) in ingress secgroup table (ipv6)"},{"line_number":164,"context_line":"        # 5. a flow in egress conntrack table (ipv4)"},{"line_number":165,"context_line":"        # 6. a flow in egress conntrack table (ipv6)"},{"line_number":166,"context_line":"        # 7. a associating flow (conjunction) in egress secgroup table (ipv4)"},{"line_number":167,"context_line":"        # 8. a associating flow (conjunction) in egress secgroup table (ipv6)"},{"line_number":168,"context_line":"        # 9. a ingress rule flow (ipv4) in ingress secgroup table"},{"line_number":169,"context_line":"        # 10. a ingress rule flow (ipv6) in ingress secgroup table"},{"line_number":170,"context_line":"        # 11. the permit flow in ingress secgroup table"},{"line_number":171,"context_line":"        # 12. a egress rule flow (ipv4) in egress secgroup table"},{"line_number":172,"context_line":"        # 13. a egress rule flow (ipv6) in egress secgroup table"},{"line_number":173,"context_line":"        # 14. the permit flow in egress secgroup table"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.assertEqual(14, self._get_call_count_of_add_flow())"},{"line_number":176,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # add local port two"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_d1fd003b","line":175,"range":{"start_line":159,"start_character":0,"end_line":175,"end_character":64},"updated":"2017-03-27 02:40:42.000000000","message":"This turns to be overwhelming complicating. Is it better to change the UT to some small pieces with assertion to method call like \"_install_associating_flow_by_direction\"","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # add local port one"},{"line_number":158,"context_line":"        self.controller.update_lport(self.fake_local_lport)"},{"line_number":159,"context_line":"        # add flows:"},{"line_number":160,"context_line":"        # 1. a flow in ingress conntrack table (ipv4)"},{"line_number":161,"context_line":"        # 2. a flow in ingress conntrack table (ipv6)"},{"line_number":162,"context_line":"        # 3. a associating flow (conjunction) in ingress secgroup table (ipv4)"},{"line_number":163,"context_line":"        # 4. a associating flow (conjunction) in ingress secgroup table (ipv6)"},{"line_number":164,"context_line":"        # 5. a flow in egress conntrack table (ipv4)"},{"line_number":165,"context_line":"        # 6. a flow in egress conntrack table (ipv6)"},{"line_number":166,"context_line":"        # 7. a associating flow (conjunction) in egress secgroup table (ipv4)"},{"line_number":167,"context_line":"        # 8. a associating flow (conjunction) in egress secgroup table (ipv6)"},{"line_number":168,"context_line":"        # 9. a ingress rule flow (ipv4) in ingress secgroup table"},{"line_number":169,"context_line":"        # 10. a ingress rule flow (ipv6) in ingress secgroup table"},{"line_number":170,"context_line":"        # 11. the permit flow in ingress secgroup table"},{"line_number":171,"context_line":"        # 12. a egress rule flow (ipv4) in egress secgroup table"},{"line_number":172,"context_line":"        # 13. a egress rule flow (ipv6) in egress secgroup table"},{"line_number":173,"context_line":"        # 14. the permit flow in egress secgroup table"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.assertEqual(14, self._get_call_count_of_add_flow())"},{"line_number":176,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # add local port two"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_34d5fa1c","line":175,"range":{"start_line":159,"start_character":0,"end_line":175,"end_character":64},"in_reply_to":"ffe62b97_d1fd003b","updated":"2017-03-28 07:56:46.000000000","message":"I am planning this change for a future refactor. This patch\u0027s changeset is large already.\nPlease let me know if you still think otherwise","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c796b2410ec7d2d68ae830762f41926e01833f0d","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        # 14. the permit flow (ipv4) in ingress secgroup table"},{"line_number":278,"context_line":"        # 15. the permit flow (ipv6) in ingress secgroup table"},{"line_number":279,"context_line":"        # 16. the permit flow in egress secgroup table"},{"line_number":280,"context_line":"        self.assertEqual(16, self._get_call_count_of_del_flow())"},{"line_number":281,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":282,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":283,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.6\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_7198741a","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":64},"updated":"2017-03-27 02:40:42.000000000","message":"Same comment here.","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"48b1c06ef56400d90c6922c7a11f755f5b708d61","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        # 14. the permit flow (ipv4) in ingress secgroup table"},{"line_number":278,"context_line":"        # 15. the permit flow (ipv6) in ingress secgroup table"},{"line_number":279,"context_line":"        # 16. the permit flow in egress secgroup table"},{"line_number":280,"context_line":"        self.assertEqual(16, self._get_call_count_of_del_flow())"},{"line_number":281,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":282,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":283,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.6\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ffe62b97_74f14295","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":64},"in_reply_to":"ffe62b97_7198741a","updated":"2017-03-28 07:56:46.000000000","message":"Same reply :)","commit_id":"646cbbf6ec63edf6b46508ebe3dc8cd92a7f1128"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _get_ether_type(self, is_ipv6):"},{"line_number":50,"context_line":"        if is_ipv6:"},{"line_number":51,"context_line":"            return \"IPv6\""},{"line_number":52,"context_line":"        return \"IPv4\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _get_another_local_lport(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_02e0c395","line":51,"range":{"start_line":51,"start_character":19,"end_line":51,"end_character":25},"updated":"2017-04-03 02:25:36.000000000","message":"neutron-lib constants","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _get_ether_type(self, is_ipv6):"},{"line_number":50,"context_line":"        if is_ipv6:"},{"line_number":51,"context_line":"            return \"IPv6\""},{"line_number":52,"context_line":"        return \"IPv4\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _get_another_local_lport(self):"},{"line_number":55,"context_line":"        fake_local_port \u003d db_models.LogicalPort(\"{}\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_e2f03f6a","line":52,"range":{"start_line":52,"start_character":15,"end_line":52,"end_character":21},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual(8, self._get_call_count_of_del_flow())"},{"line_number":208,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":209,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":210,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.10\u0027,"},{"line_number":211,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":212,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":213,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c2f3fb72","line":210,"range":{"start_line":210,"start_character":22,"end_line":210,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.10\u0027,"},{"line_number":211,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":212,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":213,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":214,"context_line":"            nw_dst\u003d\u002710.0.0.10\u0027, zone\u003d1)"},{"line_number":215,"context_line":"        expected_conntrack_cmd3 \u003d self._get_expected_conntrack_cmd("},{"line_number":216,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003d\u002710.0.0.10\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_62042f4b","line":213,"range":{"start_line":213,"start_character":22,"end_line":213,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":214,"context_line":"            nw_dst\u003d\u002710.0.0.10\u0027, zone\u003d1)"},{"line_number":215,"context_line":"        expected_conntrack_cmd3 \u003d self._get_expected_conntrack_cmd("},{"line_number":216,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003d\u002710.0.0.10\u0027,"},{"line_number":217,"context_line":"            nw_dst\u003d\u002710.0.0.6\u0027, zone\u003d1)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        expected_conntrack_cmd4 \u003d self._get_expected_conntrack_cmd("}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42ffeb33","line":216,"range":{"start_line":216,"start_character":22,"end_line":216,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":217,"context_line":"            nw_dst\u003d\u002710.0.0.6\u0027, zone\u003d1)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        expected_conntrack_cmd4 \u003d self._get_expected_conntrack_cmd("},{"line_number":220,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u00272222:2222::2\u0027,"},{"line_number":221,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        expected_conntrack_cmd5 \u003d self._get_expected_conntrack_cmd("}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_e295dfe5","line":220,"range":{"start_line":220,"start_character":22,"end_line":220,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        expected_conntrack_cmd5 \u003d self._get_expected_conntrack_cmd("},{"line_number":224,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":225,"context_line":"            nw_dst\u003d\u00272222:2222::2\u0027, zone\u003d1)"},{"line_number":226,"context_line":"        expected_conntrack_cmd6 \u003d self._get_expected_conntrack_cmd("},{"line_number":227,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003d\u00272222:2222::2\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_a29fd701","line":224,"range":{"start_line":224,"start_character":22,"end_line":224,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":225,"context_line":"            nw_dst\u003d\u00272222:2222::2\u0027, zone\u003d1)"},{"line_number":226,"context_line":"        expected_conntrack_cmd6 \u003d self._get_expected_conntrack_cmd("},{"line_number":227,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003d\u00272222:2222::2\u0027,"},{"line_number":228,"context_line":"            nw_dst\u003d\u00272222:2222::3\u0027, zone\u003d1)"},{"line_number":229,"context_line":"        self.mock_execute.assert_has_calls([expected_conntrack_cmd1,"},{"line_number":230,"context_line":"                                            expected_conntrack_cmd2,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_22fe2737","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.assertEqual(1, self._get_call_count_of_del_flow())"},{"line_number":252,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":253,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":254,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003d\u002710.0.0.8\u0027,"},{"line_number":255,"context_line":"            nw_dst\u003d\u002710.0.0.6\u0027, zone\u003d1)"},{"line_number":256,"context_line":"        self.mock_execute.assert_has_calls([expected_conntrack_cmd1],"},{"line_number":257,"context_line":"                                           any_order\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c2989b1c","line":254,"range":{"start_line":254,"start_character":22,"end_line":254,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        self.assertEqual(16, self._get_call_count_of_del_flow())"},{"line_number":281,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":282,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":283,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.6\u0027,"},{"line_number":284,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":285,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":286,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_82bbb370","line":283,"range":{"start_line":283,"start_character":22,"end_line":283,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.6\u0027,"},{"line_number":284,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":285,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":286,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":287,"context_line":"            nw_dst\u003d\u002710.0.0.6\u0027, zone\u003d1)"},{"line_number":288,"context_line":"        expected_conntrack_cmd3 \u003d self._get_expected_conntrack_cmd("},{"line_number":289,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u00272222:2222::3\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_6289cfc8","line":286,"range":{"start_line":286,"start_character":22,"end_line":286,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":287,"context_line":"            nw_dst\u003d\u002710.0.0.6\u0027, zone\u003d1)"},{"line_number":288,"context_line":"        expected_conntrack_cmd3 \u003d self._get_expected_conntrack_cmd("},{"line_number":289,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u00272222:2222::3\u0027,"},{"line_number":290,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":291,"context_line":"        expected_conntrack_cmd4 \u003d self._get_expected_conntrack_cmd("},{"line_number":292,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_42848bb1","line":289,"range":{"start_line":289,"start_character":22,"end_line":289,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u00272222:2222::3\u0027,"},{"line_number":290,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":291,"context_line":"        expected_conntrack_cmd4 \u003d self._get_expected_conntrack_cmd("},{"line_number":292,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":293,"context_line":"            nw_dst\u003d\u00272222:2222::3\u0027, zone\u003d1)"},{"line_number":294,"context_line":"        self.mock_execute.assert_has_calls([expected_conntrack_cmd1,"},{"line_number":295,"context_line":"                                            expected_conntrack_cmd2,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_028e83cf","line":292,"range":{"start_line":292,"start_character":22,"end_line":292,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        self.assertEqual(12, self._get_call_count_of_del_flow())"},{"line_number":346,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":347,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":348,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.10\u0027,"},{"line_number":349,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":350,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":351,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_c2c1bbe6","line":348,"range":{"start_line":348,"start_character":22,"end_line":348,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003d\u0027udp\u0027, nw_src\u003d\u002710.0.0.10\u0027,"},{"line_number":349,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":350,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":351,"context_line":"            ethertype\u003d\u0027IPv4\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":352,"context_line":"            nw_dst\u003d\u002710.0.0.10\u0027, zone\u003d1)"},{"line_number":353,"context_line":"        self.mock_execute.assert_has_calls([expected_conntrack_cmd1,"},{"line_number":354,"context_line":"                                            expected_conntrack_cmd2],"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_a2b8f775","line":351,"range":{"start_line":351,"start_character":22,"end_line":351,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":378,"context_line":"        # Only IPv6 rules were deleted"},{"line_number":379,"context_line":"        expected_conntrack_cmd1 \u003d self._get_expected_conntrack_cmd("},{"line_number":380,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027tcp\u0027, nw_src\u003d\u00272222:2222::2\u0027,"},{"line_number":381,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":382,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":383,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_62b2ef96","line":380,"range":{"start_line":380,"start_character":22,"end_line":380,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f758912c82ae0172205264f7166b3bbb83fa5945","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003d\u0027tcp\u0027, nw_src\u003d\u00272222:2222::2\u0027,"},{"line_number":381,"context_line":"            nw_dst\u003dNone, zone\u003d1)"},{"line_number":382,"context_line":"        expected_conntrack_cmd2 \u003d self._get_expected_conntrack_cmd("},{"line_number":383,"context_line":"            ethertype\u003d\u0027IPv6\u0027, protocol\u003dNone, nw_src\u003dNone,"},{"line_number":384,"context_line":"            nw_dst\u003d\u00272222:2222::2\u0027, zone\u003d1)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        self.mock_execute.assert_has_calls([expected_conntrack_cmd1,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dfeb2761_02a7a351","line":383,"range":{"start_line":383,"start_character":22,"end_line":383,"end_character":28},"updated":"2017-04-03 02:25:36.000000000","message":"ditto","commit_id":"0c9e9aea800de7bd43c2eae8de07113cbf3d8deb"}]}
