)]}'
{"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_dvr_process.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3662889bda33302db4f84437770706976dc9dfdc","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def _dvr_process_ipv4_match(ofp, ofpp, vlan_tag, gateway_ip):"},{"line_number":31,"context_line":"        return ofpp.OFPMatch(vlan_vid\u003dvlan_tag | ofp.OFPVID_PRESENT,"},{"line_number":32,"context_line":"                             eth_type\u003dether_types.ETH_TYPE_ARP,"},{"line_number":33,"context_line":"                             ipv4_dst\u003dgateway_ip)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def install_dvr_process_ipv4(self, vlan_tag, gateway_ip):"},{"line_number":36,"context_line":"        # block ARP"}],"source_content_type":"text/x-python","patch_set":123,"id":"3a50d1a3_812155a0","line":33,"range":{"start_line":33,"start_character":29,"end_line":33,"end_character":37},"updated":"2015-07-29 02:33:36.000000000","message":"arp_tpa","commit_id":"61997cb2d4557efcd9f4856529e8e60fc699d124"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"73efb2f9bb9e73b543a4d93c14a33b7725a44a20","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def _dvr_process_ipv4_match(ofp, ofpp, vlan_tag, gateway_ip):"},{"line_number":31,"context_line":"        return ofpp.OFPMatch(vlan_vid\u003dvlan_tag | ofp.OFPVID_PRESENT,"},{"line_number":32,"context_line":"                             eth_type\u003dether_types.ETH_TYPE_ARP,"},{"line_number":33,"context_line":"                             ipv4_dst\u003dgateway_ip)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def install_dvr_process_ipv4(self, vlan_tag, gateway_ip):"},{"line_number":36,"context_line":"        # block ARP"}],"source_content_type":"text/x-python","patch_set":123,"id":"3a50d1a3_6a63b9b1","line":33,"in_reply_to":"3a50d1a3_812155a0","updated":"2015-07-29 08:00:10.000000000","message":"Done","commit_id":"61997cb2d4557efcd9f4856529e8e60fc699d124"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3662889bda33302db4f84437770706976dc9dfdc","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        ]"},{"line_number":95,"context_line":"        instructions \u003d ["},{"line_number":96,"context_line":"            ofpp.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS, actions),"},{"line_number":97,"context_line":"            ofpp.OFPInstructionGoto(table_id\u003dself.dvr_process_next_table_id),"},{"line_number":98,"context_line":"        ]"},{"line_number":99,"context_line":"        self.install_instructions(table_id\u003dtable_id,"},{"line_number":100,"context_line":"                                  priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":123,"id":"3a50d1a3_2e615005","line":97,"range":{"start_line":97,"start_character":17,"end_line":97,"end_character":35},"updated":"2015-07-29 02:33:36.000000000","message":"OFPInstructionGotoTable","commit_id":"61997cb2d4557efcd9f4856529e8e60fc699d124"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"73efb2f9bb9e73b543a4d93c14a33b7725a44a20","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        ]"},{"line_number":95,"context_line":"        instructions \u003d ["},{"line_number":96,"context_line":"            ofpp.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS, actions),"},{"line_number":97,"context_line":"            ofpp.OFPInstructionGoto(table_id\u003dself.dvr_process_next_table_id),"},{"line_number":98,"context_line":"        ]"},{"line_number":99,"context_line":"        self.install_instructions(table_id\u003dtable_id,"},{"line_number":100,"context_line":"                                  priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":123,"id":"3a50d1a3_0a56b5cd","line":97,"in_reply_to":"3a50d1a3_2e615005","updated":"2015-07-29 08:00:10.000000000","message":"Done","commit_id":"61997cb2d4557efcd9f4856529e8e60fc699d124"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py":[{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"e6e56a113fcfebf866030affe1fb1e5eef70831c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            ofpp.OFPActionSetField(vlan_vid\u003dlvid | ofp.OFPVID_PRESENT),"},{"line_number":72,"context_line":"            ofpp.OFPActionOutput(ofp.OFPP_NORMAL, 0),"},{"line_number":73,"context_line":"        ]"},{"line_number":74,"context_line":"        self.install_apply_actions(priority\u003d3,"},{"line_number":75,"context_line":"                                   match\u003dmatch,"},{"line_number":76,"context_line":"                                   actions\u003dactions)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":120,"id":"9a41bdd9_23a3f201","line":74,"updated":"2015-07-14 14:59:15.000000000","message":"nit: can we document the reason for the magic constants here and it Ls\n108, 113, 124, 136, 156 and 168","commit_id":"18fdb0646e203ca9312407457cf4495825203b11"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"01c95aef7166b6513abb0f90d62eb44b52a3a4af","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            ofpp.OFPActionSetField(vlan_vid\u003dlvid | ofp.OFPVID_PRESENT),"},{"line_number":72,"context_line":"            ofpp.OFPActionOutput(ofp.OFPP_NORMAL, 0),"},{"line_number":73,"context_line":"        ]"},{"line_number":74,"context_line":"        self.install_apply_actions(priority\u003d3,"},{"line_number":75,"context_line":"                                   match\u003dmatch,"},{"line_number":76,"context_line":"                                   actions\u003dactions)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":120,"id":"9a41bdd9_e5b88e77","line":74,"in_reply_to":"9a41bdd9_23a3f201","updated":"2015-07-15 04:25:19.000000000","message":"these constants are not introduced by this patch.\n\nif it\u0027s desirable to make them named, it can be done in\na separate patch.  (i\u0027m not sure if it worth, though)\n\ni don\u0027t think it\u0027s a good idea to make non-essential changes\nwithin this patch as it\u0027s already big.","commit_id":"18fdb0646e203ca9312407457cf4495825203b11"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_phys.py":[{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"e6e56a113fcfebf866030affe1fb1e5eef70831c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            actions \u003d [ofpp.OFPActionSetField(vlan_vid\u003dvlan_vid)]"},{"line_number":49,"context_line":"        actions +\u003d [ofpp.OFPActionOutput(ofp.OFPP_NORMAL, 0)]"},{"line_number":50,"context_line":"        self.install_apply_actions(table_id\u003dtable_id,"},{"line_number":51,"context_line":"                                   priority\u003d4,"},{"line_number":52,"context_line":"                                   match\u003dmatch,"},{"line_number":53,"context_line":"                                   actions\u003dactions)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":120,"id":"9a41bdd9_8333deaa","line":51,"updated":"2015-07-14 14:59:15.000000000","message":"nit: please document the why of the magic constant","commit_id":"18fdb0646e203ca9312407457cf4495825203b11"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_tun.py":[{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"e6e56a113fcfebf866030affe1fb1e5eef70831c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            # REVISIT(yamamoto): add arp_op\u003darp.ARP_REQUEST matcher?"},{"line_number":63,"context_line":"            self.install_goto(dest_table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":64,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":65,"context_line":"                              priority\u003d1,"},{"line_number":66,"context_line":"                              eth_dst\u003d\"ff:ff:ff:ff:ff:ff\","},{"line_number":67,"context_line":"                              eth_type\u003dether_types.ETH_TYPE_ARP)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":120,"id":"9a41bdd9_c3c32656","line":65,"updated":"2015-07-14 14:59:15.000000000","message":"nit: more magic constants","commit_id":"18fdb0646e203ca9312407457cf4495825203b11"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"c8f70a692b123d074baccc046e37760901f14706","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # sense.  Thus this method is left as no-op."},{"line_number":276,"context_line":"        # It might be possible to send multiple flow-mods with a single"},{"line_number":277,"context_line":"        # barrier.  But it\u0027s unclear that level of performance optimization"},{"line_number":278,"context_line":"        # is desirable while it would certainly complicate error handling."},{"line_number":279,"context_line":"        return self"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __enter__(self):"}],"source_content_type":"text/x-python","patch_set":128,"id":"fa1b9901_4ffe31af","line":278,"updated":"2015-08-20 06:19:40.000000000","message":"What about not only performance, do we have any cases where we need groups of flows getting programmed atomically?, \nnot sure if that\u0027s possible with OF btw.","commit_id":"3e8611f2755f6dd8717380c9ed34fc1f0dfee8b5"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"c03af5f6b7834a7c0392c9745fc63f5ea0bb8700","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # sense.  Thus this method is left as no-op."},{"line_number":276,"context_line":"        # It might be possible to send multiple flow-mods with a single"},{"line_number":277,"context_line":"        # barrier.  But it\u0027s unclear that level of performance optimization"},{"line_number":278,"context_line":"        # is desirable while it would certainly complicate error handling."},{"line_number":279,"context_line":"        return self"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __enter__(self):"}],"source_content_type":"text/x-python","patch_set":128,"id":"fa1b9901_3d7be9f6","line":278,"in_reply_to":"fa1b9901_2f2dfda7","updated":"2015-08-20 12:20:30.000000000","message":"Ok, so we don\u0027t depend on atomicity now.\n\nMay be we can make use of deferred in the future, just drop it, or add some kind of transaction support to send multiple rules at once.\n\n\nThanks","commit_id":"3e8611f2755f6dd8717380c9ed34fc1f0dfee8b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1e7a3236c43f558310b7cb2b26c970ad3de3bbfa","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # sense.  Thus this method is left as no-op."},{"line_number":276,"context_line":"        # It might be possible to send multiple flow-mods with a single"},{"line_number":277,"context_line":"        # barrier.  But it\u0027s unclear that level of performance optimization"},{"line_number":278,"context_line":"        # is desirable while it would certainly complicate error handling."},{"line_number":279,"context_line":"        return self"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def __enter__(self):"}],"source_content_type":"text/x-python","patch_set":128,"id":"fa1b9901_2f2dfda7","line":278,"in_reply_to":"fa1b9901_4ffe31af","updated":"2015-08-20 06:43:27.000000000","message":"it isn\u0027t possible with OpenFlow 1.3.\nOpenFlow 1.4 introduced an optional \"bundle\" feature which provides atomicity.","commit_id":"3e8611f2755f6dd8717380c9ed34fc1f0dfee8b5"}],"neutron/plugins/openvswitch/agent/main.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_main_modules \u003d {"},{"line_number":33,"context_line":"    \u0027ovs-ofctl\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ovs_ofctl.main\u0027,"},{"line_number":34,"context_line":"    \u0027native\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ryu.main\u0027,"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_83a6dfab","line":34,"updated":"2015-06-11 13:37:57.000000000","message":"s/ryu/native/ ?","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_main_modules \u003d {"},{"line_number":33,"context_line":"    \u0027ovs-ofctl\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ovs_ofctl.main\u0027,"},{"line_number":34,"context_line":"    \u0027native\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ryu.main\u0027,"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_fcaaf084","line":34,"in_reply_to":"3afb71cf_83a6dfab","updated":"2015-06-15 06:01:29.000000000","message":"Done","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b555915516d5dd9cc1b65faca9b60a44f6a0f93","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_main_modules \u003d {"},{"line_number":33,"context_line":"    \u0027ovs-ofctl\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ovs_ofctl.main\u0027,"},{"line_number":34,"context_line":"    \u0027native\u0027: \u0027neutron.plugins.openvswitch.agent.openflow.ryu.main\u0027,"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_4bc35639","line":34,"in_reply_to":"3afb71cf_83a6dfab","updated":"2015-06-11 16:38:22.000000000","message":"right.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"neutron/plugins/openvswitch/agent/openflow/native/br_dvr_process.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_63cf6356","line":17,"updated":"2015-06-11 13:37:57.000000000","message":"Do we need VMware copyright to this file? It depends on how much code are from the original file and finally it is up to the authors\u0027 decision.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b555915516d5dd9cc1b65faca9b60a44f6a0f93","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_ee50d00c","line":17,"in_reply_to":"3afb71cf_63cf6356","updated":"2015-06-11 16:38:22.000000000","message":"it seems nothing left from the original code.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_bc7c6821","line":17,"in_reply_to":"3afb71cf_ee50d00c","updated":"2015-06-15 06:01:29.000000000","message":"Is it okay to remove this? I\u0027d rather leave this as is.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6d12f715ec7ab3032695f326077da8a2f467f4c5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_e4a7b24d","line":17,"in_reply_to":"fa32b979_bc7c6821","updated":"2015-06-17 11:44:49.000000000","message":"You and takashi are the authors of this file. It is up to you two, but according to Takashi\u0027s comment it sounds no problem to delete it.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"344be9645d69e1af05da643cfda8742aa59ba87a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"ba3cc151_7af7d9d4","line":17,"in_reply_to":"fa32b979_c09781ea","updated":"2015-07-10 09:25:40.000000000","message":"removed.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"74abcda4f37e58ebc776000dacf13a86cdfa60c7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Copyright 2011 VMware, Inc."},{"line_number":18,"context_line":"# All Rights Reserved."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_c09781ea","line":17,"in_reply_to":"fa32b979_e4a7b24d","updated":"2015-06-17 12:01:57.000000000","message":"iwamoto-san, either ways are fine for me.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"neutron/plugins/openvswitch/agent/openflow/native/br_tun.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7a805677a23f8f1db4efb3d16bb1528caafb533e","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                          eth_src\u003dmac)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def deferred(self):"},{"line_number":265,"context_line":"        # REVISIT(yamamoto): For API compat with ovs-ofctl driver."},{"line_number":266,"context_line":"        return self"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def __enter__(self):"}],"source_content_type":"text/x-python","patch_set":112,"id":"7a016987_a0852dae","line":265,"updated":"2015-05-26 15:20:30.000000000","message":"not sure what you mean in these three methods. What is there to \u0027revisit\u0027? I\u0027d rather address this more cleanly in the context of this patch. Besides, it looks like the \u0027deferred\u0027 method signature is different. Is that intentional?","commit_id":"13281f74b91cccbf8a632a3467389444550944c4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"830b901f555f09756178e9d104ea2f17fb2f0a8f","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                          eth_src\u003dmac)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def deferred(self):"},{"line_number":265,"context_line":"        # REVISIT(yamamoto): For API compat with ovs-ofctl driver."},{"line_number":266,"context_line":"        return self"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def __enter__(self):"}],"source_content_type":"text/x-python","patch_set":112,"id":"7a016987_056885b9","line":265,"in_reply_to":"7a016987_a0852dae","updated":"2015-05-26 20:36:36.000000000","message":"i added a comment.\n\nthe signature difference was intentional but i changed my mind\nand made it consistent. (in other patch)","commit_id":"13281f74b91cccbf8a632a3467389444550944c4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if arp_responder_enabled:"},{"line_number":58,"context_line":"            # ARP broadcast-ed request go to the local ARP_RESPONDER table to"},{"line_number":59,"context_line":"            # be locally resolved"},{"line_number":60,"context_line":"            # REVISIT(yamamoto): arp_op\u003darp.ARP_REQUEST"},{"line_number":61,"context_line":"            self.install_goto(dest_table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":62,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":63,"context_line":"                              priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_5e5c3c4a","line":60,"updated":"2015-06-11 13:37:57.000000000","message":"Could you clarify what need to be revisited? I cannot understand only  from the string \"arp_op\u003darp.ARP_REQUEST\".\n\nIt applies to all similar REVISIT below.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if arp_responder_enabled:"},{"line_number":58,"context_line":"            # ARP broadcast-ed request go to the local ARP_RESPONDER table to"},{"line_number":59,"context_line":"            # be locally resolved"},{"line_number":60,"context_line":"            # REVISIT(yamamoto): arp_op\u003darp.ARP_REQUEST"},{"line_number":61,"context_line":"            self.install_goto(dest_table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":62,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":63,"context_line":"                              priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_bedbfd1a","line":60,"in_reply_to":"3afb71cf_5e5c3c4a","updated":"2015-06-15 06:01:29.000000000","message":"Done","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b555915516d5dd9cc1b65faca9b60a44f6a0f93","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if arp_responder_enabled:"},{"line_number":58,"context_line":"            # ARP broadcast-ed request go to the local ARP_RESPONDER table to"},{"line_number":59,"context_line":"            # be locally resolved"},{"line_number":60,"context_line":"            # REVISIT(yamamoto): arp_op\u003darp.ARP_REQUEST"},{"line_number":61,"context_line":"            self.install_goto(dest_table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":62,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":63,"context_line":"                              priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_ebf1e26b","line":60,"in_reply_to":"3afb71cf_5e5c3c4a","updated":"2015-06-11 16:38:22.000000000","message":"i meant it might be better to match with arp_op as well.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        if ip is None:"},{"line_number":238,"context_line":"            # REVISIT(yamamoto): arp_op\u003darp.ARP_REQUEST"},{"line_number":239,"context_line":"            match \u003d ofpp.OFPMatch(vlan_vid\u003dvlan | ofp.OFPVID_PRESENT,"},{"line_number":240,"context_line":"                             eth_type\u003dether_types.ETH_TYPE_ARP)"},{"line_number":241,"context_line":"        else:"},{"line_number":242,"context_line":"            match \u003d self._arp_responder_match(ofp, ofpp, vlan, ip)"},{"line_number":243,"context_line":"        self.delete_flows(table_id\u003dconstants.ARP_RESPONDER, match\u003dmatch)"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_9e3cf4e1","line":240,"updated":"2015-06-11 13:37:57.000000000","message":"wrong indent level","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        if ip is None:"},{"line_number":238,"context_line":"            # REVISIT(yamamoto): arp_op\u003darp.ARP_REQUEST"},{"line_number":239,"context_line":"            match \u003d ofpp.OFPMatch(vlan_vid\u003dvlan | ofp.OFPVID_PRESENT,"},{"line_number":240,"context_line":"                             eth_type\u003dether_types.ETH_TYPE_ARP)"},{"line_number":241,"context_line":"        else:"},{"line_number":242,"context_line":"            match \u003d self._arp_responder_match(ofp, ofpp, vlan, ip)"},{"line_number":243,"context_line":"        self.delete_flows(table_id\u003dconstants.ARP_RESPONDER, match\u003dmatch)"}],"source_content_type":"text/x-python","patch_set":116,"id":"fa32b979_ded84120","line":240,"in_reply_to":"3afb71cf_9e3cf4e1","updated":"2015-06-15 06:01:29.000000000","message":"Done","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"neutron/plugins/openvswitch/agent/openflow/native/ovs_ryuapp.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ryu.app.ofctl.api  # noqa"},{"line_number":20,"context_line":"from ryu.base import app_manager"},{"line_number":21,"context_line":"from ryu.lib import hub"},{"line_number":22,"context_line":"from ryu.ofproto import ofproto_v1_3"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_0447964c","line":19,"updated":"2015-06-11 13:37:57.000000000","message":"Could you add a comment about what this import does?\nIt helps other developers understand why in the future.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ryu.app.ofctl.api  # noqa"},{"line_number":20,"context_line":"from ryu.base import app_manager"},{"line_number":21,"context_line":"from ryu.lib import hub"},{"line_number":22,"context_line":"from ryu.ofproto import ofproto_v1_3"}],"source_content_type":"text/x-python","patch_set":116,"id":"1af86dd1_db5b892d","line":19,"in_reply_to":"3afb71cf_0447964c","updated":"2015-06-15 06:01:29.000000000","message":"It\u0027s needed for initialization of ryu_app.  I\u0027ll add a short comment.\nSee http://ryu.readthedocs.org/en/latest/app/ofctl.html","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"neutron/plugins/openvswitch/agent/ryu/br_tun.py":[{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":56,"context_line":"                              priority\u003d1,"},{"line_number":57,"context_line":"                              match\u003dmatch,"},{"line_number":58,"context_line":"                              instructions\u003dinstructions)"},{"line_number":59,"context_line":"        self._send_msg(msg)"},{"line_number":60,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp, priority\u003d0)"},{"line_number":61,"context_line":"        self._send_msg(msg)"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_763ef8b9","line":58,"updated":"2015-03-26 15:03:43.000000000","message":"The code will be more readable and concise if you will use\nself.install_goto(dest_table_id\u003dconstants.PATCH_LV_TO_TUN, priority\u003d1, in_port\u003dpatch_int_ofport)","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":56,"context_line":"                              priority\u003d1,"},{"line_number":57,"context_line":"                              match\u003dmatch,"},{"line_number":58,"context_line":"                              instructions\u003dinstructions)"},{"line_number":59,"context_line":"        self._send_msg(msg)"},{"line_number":60,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp, priority\u003d0)"},{"line_number":61,"context_line":"        self._send_msg(msg)"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_c4d17afd","line":58,"in_reply_to":"fa963961_763ef8b9","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                              match\u003dmatch,"},{"line_number":58,"context_line":"                              instructions\u003dinstructions)"},{"line_number":59,"context_line":"        self._send_msg(msg)"},{"line_number":60,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp, priority\u003d0)"},{"line_number":61,"context_line":"        self._send_msg(msg)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if arp_responder_enabled:"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_ab453918","line":60,"updated":"2015-03-26 15:03:43.000000000","message":"Can you add comment on what this flow mod is doing?","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                              match\u003dmatch,"},{"line_number":58,"context_line":"                              instructions\u003dinstructions)"},{"line_number":59,"context_line":"        self._send_msg(msg)"},{"line_number":60,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp, priority\u003d0)"},{"line_number":61,"context_line":"        self._send_msg(msg)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if arp_responder_enabled:"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_a4ce7658","line":60,"in_reply_to":"fa963961_ab453918","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                  table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":73,"context_line":"                                  priority\u003d1,"},{"line_number":74,"context_line":"                                  match\u003dmatch,"},{"line_number":75,"context_line":"                                  instructions\u003dinstructions)"},{"line_number":76,"context_line":"            self._send_msg(msg)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # PATCH_LV_TO_TUN table will handle packets coming from patch_int"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_96729c7b","line":75,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can be replaced with: self.install_goto(dest_table_id\u003dconstants.ARP_RESPONDER, table_id\u003dconstants.PATCH_LV_TO_TUN, priority\u003d1, eth_dst\u003d\"ff:ff:ff:ff:ff:ff\", eth_type\u003dether_types.ETH_TYPE_ARP)","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                  table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":73,"context_line":"                                  priority\u003d1,"},{"line_number":74,"context_line":"                                  match\u003dmatch,"},{"line_number":75,"context_line":"                                  instructions\u003dinstructions)"},{"line_number":76,"context_line":"            self._send_msg(msg)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # PATCH_LV_TO_TUN table will handle packets coming from patch_int"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_84db721b","line":75,"in_reply_to":"fa963961_96729c7b","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":87,"context_line":"                              priority\u003d0,"},{"line_number":88,"context_line":"                              match\u003dmatch,"},{"line_number":89,"context_line":"                              instructions\u003dinstructions)"},{"line_number":90,"context_line":"        self._send_msg(msg)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # Broadcasts/multicasts go to table FLOOD_TO_TUN that handles flooding"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_b613600d","line":89,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can also be replaced by more concise self.install_goto call","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":87,"context_line":"                              priority\u003d0,"},{"line_number":88,"context_line":"                              match\u003dmatch,"},{"line_number":89,"context_line":"                              instructions\u003dinstructions)"},{"line_number":90,"context_line":"        self._send_msg(msg)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # Broadcasts/multicasts go to table FLOOD_TO_TUN that handles flooding"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_c4f85a7f","line":89,"in_reply_to":"fa963961_b613600d","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":99,"context_line":"                              priority\u003d0,"},{"line_number":100,"context_line":"                              match\u003dmatch,"},{"line_number":101,"context_line":"                              instructions\u003dinstructions)"},{"line_number":102,"context_line":"        self._send_msg(msg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Tables [tunnel_type]_TUN_TO_LV will set lvid depending on tun_id"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_d625c45c","line":101,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can also be replaced by more concise self.install_goto call","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              table_id\u003dconstants.PATCH_LV_TO_TUN,"},{"line_number":99,"context_line":"                              priority\u003d0,"},{"line_number":100,"context_line":"                              match\u003dmatch,"},{"line_number":101,"context_line":"                              instructions\u003dinstructions)"},{"line_number":102,"context_line":"        self._send_msg(msg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Tables [tunnel_type]_TUN_TO_LV will set lvid depending on tun_id"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_24302656","line":101,"in_reply_to":"fa963961_d625c45c","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        for tunnel_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":108,"context_line":"            msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":109,"context_line":"                                  table_id\u003dconstants.TUN_TABLE[tunnel_type],"},{"line_number":110,"context_line":"                                  priority\u003d0)"},{"line_number":111,"context_line":"            self._send_msg(msg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # LEARN_FROM_TUN table will have a single flow using a learn action to"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_16ba0ce2","line":110,"updated":"2015-03-26 15:03:43.000000000","message":"I don\u0027t see any instructions in this flow mod. Is it intentional?","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        for tunnel_type in constants.TUNNEL_NETWORK_TYPES:"},{"line_number":108,"context_line":"            msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":109,"context_line":"                                  table_id\u003dconstants.TUN_TABLE[tunnel_type],"},{"line_number":110,"context_line":"                                  priority\u003d0)"},{"line_number":111,"context_line":"            self._send_msg(msg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # LEARN_FROM_TUN table will have a single flow using a learn action to"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_64ef4eb1","line":110,"in_reply_to":"fa963961_16ba0ce2","updated":"2015-03-30 03:17:28.000000000","message":"yes.\nOFPFlowMod class has default instructions\u003d[], which means \"drop\".","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":157,"context_line":"                              table_id\u003dconstants.UCAST_TO_TUN,"},{"line_number":158,"context_line":"                              priority\u003d0,"},{"line_number":159,"context_line":"                              instructions\u003dinstructions)"},{"line_number":160,"context_line":"        self._send_msg(msg)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        if arp_responder_enabled:"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_162b2ced","line":159,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can also be replaced by more concise self.install_goto call","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":157,"context_line":"                              table_id\u003dconstants.UCAST_TO_TUN,"},{"line_number":158,"context_line":"                              priority\u003d0,"},{"line_number":159,"context_line":"                              instructions\u003dinstructions)"},{"line_number":160,"context_line":"        self._send_msg(msg)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        if arp_responder_enabled:"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_a46af618","line":159,"in_reply_to":"fa963961_162b2ced","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":168,"context_line":"                                  table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":169,"context_line":"                                  priority\u003d0,"},{"line_number":170,"context_line":"                                  instructions\u003dinstructions)"},{"line_number":171,"context_line":"            self._send_msg(msg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        # FLOOD_TO_TUN will handle flooding in tunnels based on lvid,"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_b61000aa","line":170,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can also be replaced by more concise self.install_goto call","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":168,"context_line":"                                  table_id\u003dconstants.ARP_RESPONDER,"},{"line_number":169,"context_line":"                                  priority\u003d0,"},{"line_number":170,"context_line":"                                  instructions\u003dinstructions)"},{"line_number":171,"context_line":"            self._send_msg(msg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        # FLOOD_TO_TUN will handle flooding in tunnels based on lvid,"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_8477f201","line":170,"in_reply_to":"fa963961_b61000aa","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":7706,"name":"Anton Frolov","email":"frolov.anton@gmail.com","username":"anton"},"change_message_id":"01d63c935cff43d71e39db4f3490be4eedec191b","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":305,"context_line":"                              priority\u003d1,"},{"line_number":306,"context_line":"                              match\u003dmatch,"},{"line_number":307,"context_line":"                              instructions\u003dinstructions)"},{"line_number":308,"context_line":"        self._send_msg(msg)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def cleanup_tunnel_port(self, port):"}],"source_content_type":"text/x-python","patch_set":72,"id":"fa963961_9141863c","line":307,"updated":"2015-03-26 15:03:43.000000000","message":"This flow mod can also be replaced by more concise self.install_goto call","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d907e50eb3b8e34a3d5c2ab3778ef6267c01b225","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        msg \u003d ofpp.OFPFlowMod(dp,"},{"line_number":305,"context_line":"                              priority\u003d1,"},{"line_number":306,"context_line":"                              match\u003dmatch,"},{"line_number":307,"context_line":"                              instructions\u003dinstructions)"},{"line_number":308,"context_line":"        self._send_msg(msg)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def cleanup_tunnel_port(self, port):"}],"source_content_type":"text/x-python","patch_set":72,"id":"da9b358b_c4029a3e","line":307,"in_reply_to":"fa963961_9141863c","updated":"2015-03-30 03:17:28.000000000","message":"Done","commit_id":"84953323f7e9573e4342f55e5bc3d4c33a76efba"}],"neutron/plugins/openvswitch/agent/ryu/ofswitch.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"1da80a31dcfc8ab8ce810af42e4e6bc86e9fa12e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def _get_dp_by_dpid(self, dpid_int):"},{"line_number":35,"context_line":"        \"\"\"Get Ryu datapath object for the switch.\"\"\""},{"line_number":36,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.ofp_connect_timeout"},{"line_number":37,"context_line":"        start_time \u003d timeutils.utcnow()"},{"line_number":38,"context_line":"        while True:"},{"line_number":39,"context_line":"            dp \u003d ofctl_api.get_datapath(self._app, dpid_int)"},{"line_number":40,"context_line":"            if dp is not None:"}],"source_content_type":"text/x-python","patch_set":74,"id":"da9b358b_513c0993","line":37,"updated":"2015-03-30 07:09:19.000000000","message":"Why not use the system\u0027s monotonic timer?","commit_id":"e06b7511dddf10490746dcaca068fa71ad64087a"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bb803339c31a1701f2d4a3760f4528d91a7b9041","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def _get_dp_by_dpid(self, dpid_int):"},{"line_number":35,"context_line":"        \"\"\"Get Ryu datapath object for the switch.\"\"\""},{"line_number":36,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.ofp_connect_timeout"},{"line_number":37,"context_line":"        start_time \u003d timeutils.utcnow()"},{"line_number":38,"context_line":"        while True:"},{"line_number":39,"context_line":"            dp \u003d ofctl_api.get_datapath(self._app, dpid_int)"},{"line_number":40,"context_line":"            if dp is not None:"}],"source_content_type":"text/x-python","patch_set":74,"id":"da9b358b_d15b7953","line":37,"in_reply_to":"da9b358b_513c0993","updated":"2015-03-30 07:34:33.000000000","message":"Done","commit_id":"e06b7511dddf10490746dcaca068fa71ad64087a"}],"neutron/plugins/openvswitch/agent/xenapi/etc/xapi.d/plugins/netwrap":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"ALLOWED_CMDS \u003d ["},{"line_number":36,"context_line":"    \u0027ip\u0027,"},{"line_number":37,"context_line":"    \u0027ovs-ofctl\u0027,  # NOTE(yamamoto): of_interface\u003dnative doesn\u0027t use ovs-ofctl$"},{"line_number":38,"context_line":"    \u0027ovs-vsctl\u0027,"},{"line_number":39,"context_line":"    \u0027ovsdb-client\u0027,"},{"line_number":40,"context_line":"    ]"}],"source_content_type":"application/octet-stream","patch_set":116,"id":"3afb71cf_84a826dd","line":37,"updated":"2015-06-11 13:37:57.000000000","message":"$ at the end of line seems unnecessary.\n\nIn addition, the comment seems better to be placed in the previous line.\n\n  # NOTE.....\n  \u0027ovs-ofctl\u0027,","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"16defec4e467c6e06c86b8199f2562309dd99e58","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"ALLOWED_CMDS \u003d ["},{"line_number":36,"context_line":"    \u0027ip\u0027,"},{"line_number":37,"context_line":"    \u0027ovs-ofctl\u0027,  # NOTE(yamamoto): of_interface\u003dnative doesn\u0027t use ovs-ofctl$"},{"line_number":38,"context_line":"    \u0027ovs-vsctl\u0027,"},{"line_number":39,"context_line":"    \u0027ovsdb-client\u0027,"},{"line_number":40,"context_line":"    ]"}],"source_content_type":"application/octet-stream","patch_set":116,"id":"fa32b979_1ef6a98f","line":37,"in_reply_to":"3afb71cf_84a826dd","updated":"2015-06-15 06:01:29.000000000","message":"Done","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"neutron/tests/functional/agent/test_ovs_flows.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"26235c8f243f28387ce6b14aec4403497c62eed5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.init_done \u003d False"},{"line_number":50,"context_line":"        self.init_done_ev \u003d eventlet.event.Event()"},{"line_number":51,"context_line":"        cfg.CONF.OVS.of_listen_port \u003d net_helpers.get_free_namespace_port("},{"line_number":52,"context_line":"            n_const.PROTO_NAME_TCP)"},{"line_number":53,"context_line":"        self.of_interface_mod.init_config()"},{"line_number":54,"context_line":"        self._main_thread \u003d eventlet.spawn(self._kick_main)"},{"line_number":55,"context_line":"        self.addCleanup(self._kill_main)"}],"source_content_type":"text/x-python","patch_set":134,"id":"da20952f_4948a82d","line":52,"updated":"2015-08-28 09:42:18.000000000","message":"why not set_override?\n\nisn\u0027t this racy with the other instances of the tests?","commit_id":"063ae61ffab200f1fd3f5ef21722c88c8a60c412"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"bf203bf8840f371e21f3db581c06a212975ef119","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.init_done \u003d False"},{"line_number":50,"context_line":"        self.init_done_ev \u003d eventlet.event.Event()"},{"line_number":51,"context_line":"        cfg.CONF.OVS.of_listen_port \u003d net_helpers.get_free_namespace_port("},{"line_number":52,"context_line":"            n_const.PROTO_NAME_TCP)"},{"line_number":53,"context_line":"        self.of_interface_mod.init_config()"},{"line_number":54,"context_line":"        self._main_thread \u003d eventlet.spawn(self._kick_main)"},{"line_number":55,"context_line":"        self.addCleanup(self._kill_main)"}],"source_content_type":"text/x-python","patch_set":134,"id":"da20952f_e2238a56","line":52,"in_reply_to":"da20952f_4948a82d","updated":"2015-08-31 07:22:09.000000000","message":"I\u0027ve changed to use set_override.\n\nIt is racy but negligible unless we have thousands of cores,  but I added a retry logic.","commit_id":"063ae61ffab200f1fd3f5ef21722c88c8a60c412"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"045bdec2c3abef0ada03a7868416d7f04e9e9271","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                while not self.init_done:"},{"line_number":72,"context_line":"                    self.init_done_ev.wait()"},{"line_number":73,"context_line":"                break"},{"line_number":74,"context_line":"            except Exception:"},{"line_number":75,"context_line":"                self._kill_main()"},{"line_number":76,"context_line":"            retry_count -\u003d 1"},{"line_number":77,"context_line":"            if retry_count \u003c 0:"}],"source_content_type":"text/x-python","patch_set":135,"id":"da20952f_cd39d7d8","line":74,"range":{"start_line":74,"start_character":19,"end_line":74,"end_character":28},"updated":"2015-08-31 07:54:53.000000000","message":"can this be more specific than Exception?\n\nin case of port-conflict, an exception would be raised in OpenFlowController thread.\nis it propagated to here?","commit_id":"d8c3ef03aeeeef5c08d43fe37d8fa3450cbb71f0"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c8481934fddd0aa1efcea03c2cd24810eaed6259","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                while not self.init_done:"},{"line_number":72,"context_line":"                    self.init_done_ev.wait()"},{"line_number":73,"context_line":"                break"},{"line_number":74,"context_line":"            except Exception:"},{"line_number":75,"context_line":"                self._kill_main()"},{"line_number":76,"context_line":"            retry_count -\u003d 1"},{"line_number":77,"context_line":"            if retry_count \u003c 0:"}],"source_content_type":"text/x-python","patch_set":135,"id":"da20952f_7e2a49e9","line":74,"in_reply_to":"da20952f_91c3a78a","updated":"2015-09-02 03:08:13.000000000","message":"Hi Armando,\n\nit is very unlikely since get_free_namespace_port has about 64000 ports to choose from and the race window (between get_free_namespace_port and ryuapp init) isn\u0027t large.  It is an example of the Birthday problem (paradox) and has about 1/2000 chance of failure per test (in worst case where every test worker thread simultaneously calls get_free_namespace_port) with the current gate setup of 8 test workers.","commit_id":"d8c3ef03aeeeef5c08d43fe37d8fa3450cbb71f0"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c8481934fddd0aa1efcea03c2cd24810eaed6259","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                while not self.init_done:"},{"line_number":72,"context_line":"                    self.init_done_ev.wait()"},{"line_number":73,"context_line":"                break"},{"line_number":74,"context_line":"            except Exception:"},{"line_number":75,"context_line":"                self._kill_main()"},{"line_number":76,"context_line":"            retry_count -\u003d 1"},{"line_number":77,"context_line":"            if retry_count \u003c 0:"}],"source_content_type":"text/x-python","patch_set":135,"id":"da20952f_7b36dbb5","line":74,"in_reply_to":"da20952f_cd39d7d8","updated":"2015-09-02 03:08:13.000000000","message":"Hi Yamamoto-san,\n\nit is TimeoutException.\n\nhttp://paste.openstack.org/show/439445/","commit_id":"d8c3ef03aeeeef5c08d43fe37d8fa3450cbb71f0"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"68bca1f4bfd3cdffa81830f789f34009f969df61","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                while not self.init_done:"},{"line_number":72,"context_line":"                    self.init_done_ev.wait()"},{"line_number":73,"context_line":"                break"},{"line_number":74,"context_line":"            except Exception:"},{"line_number":75,"context_line":"                self._kill_main()"},{"line_number":76,"context_line":"            retry_count -\u003d 1"},{"line_number":77,"context_line":"            if retry_count \u003c 0:"}],"source_content_type":"text/x-python","patch_set":135,"id":"da20952f_91c3a78a","line":74,"in_reply_to":"da20952f_cd39d7d8","updated":"2015-09-01 17:34:57.000000000","message":"I actually wonder if this may be a source of races in the functional tests.","commit_id":"d8c3ef03aeeeef5c08d43fe37d8fa3450cbb71f0"}],"neutron/tests/functional/requirements.txt":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f84490e3a80c6507f152601cef0e64208e9697d7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"psutil\u003e\u003d1.1.1,\u003c2.0.0"},{"line_number":8,"context_line":"psycopg2"},{"line_number":9,"context_line":"PyMySQL\u003e\u003d0.6.2  # MIT License"},{"line_number":10,"context_line":"ryu\u003e\u003d3.23.2"}],"source_content_type":"text/plain","patch_set":121,"id":"3a50d1a3_6d7ddab0","line":10,"updated":"2015-07-24 03:21:04.000000000","message":"iwamoto-san,\n\nas ryu is in global-req now,\ncan you move this to neutron/requirements.txt?","commit_id":"4230d16cdb0b0111e4a577b0b39ca5aa9a4a2486"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"295dd8a55d77344ade42bfe84f4bc967d773656e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"psutil\u003e\u003d1.1.1,\u003c2.0.0"},{"line_number":8,"context_line":"psycopg2"},{"line_number":9,"context_line":"PyMySQL\u003e\u003d0.6.2  # MIT License"},{"line_number":10,"context_line":"ryu\u003e\u003d3.23.2"}],"source_content_type":"text/plain","patch_set":121,"id":"3a50d1a3_350dcd37","line":10,"in_reply_to":"3a50d1a3_6d7ddab0","updated":"2015-07-24 08:25:44.000000000","message":"Done","commit_id":"4230d16cdb0b0111e4a577b0b39ca5aa9a4a2486"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"825cfe8ae60a38a8ee806da9550a5fc5f55a5a9a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import oslo_messaging"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ryu.ofproto import ofproto_v1_3_parser as ofpp"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron.agent.common import ovs_lib"},{"line_number":27,"context_line":"from neutron.agent.common import utils"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_f9bd0103","line":24,"updated":"2015-08-24 08:45:41.000000000","message":"in other places mocked version of ryu is used for the tests.\nwhile ryu is in requrements.txt now, i think it\u0027s better to\nkeep mocking.","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"742cf9cb65e2cfe5ac8fa6b5e299fff8277498f5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import oslo_messaging"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ryu.ofproto import ofproto_v1_3_parser as ofpp"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron.agent.common import ovs_lib"},{"line_number":27,"context_line":"from neutron.agent.common import utils"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_8db491f2","line":24,"in_reply_to":"fa1b9901_f9bd0103","updated":"2015-08-25 02:46:00.000000000","message":"Done","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"825cfe8ae60a38a8ee806da9550a5fc5f55a5a9a","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"            del_flow.assert_has_calls([mock.call(cookie\u003d17185,"},{"line_number":1401,"context_line":"                                                 cookie_mask\u003duint64_max),"},{"line_number":1402,"context_line":"                                       mock.call(cookie\u003d9029,"},{"line_number":1403,"context_line":"                                                 cookie_mask\u003duint64_max)])"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"class AncillaryBridgesTest(object):"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_b930e908","line":1403,"updated":"2015-08-24 08:45:41.000000000","message":"see https://review.openstack.org/#/c/216152/","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"742cf9cb65e2cfe5ac8fa6b5e299fff8277498f5","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"            del_flow.assert_has_calls([mock.call(cookie\u003d17185,"},{"line_number":1401,"context_line":"                                                 cookie_mask\u003duint64_max),"},{"line_number":1402,"context_line":"                                       mock.call(cookie\u003d9029,"},{"line_number":1403,"context_line":"                                                 cookie_mask\u003duint64_max)])"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"class AncillaryBridgesTest(object):"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_cda129ab","line":1403,"in_reply_to":"fa1b9901_b930e908","updated":"2015-08-25 02:46:00.000000000","message":"Well, as the code uses set(), the calling order isn\u0027t guaranteed.\nFixed.","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"825cfe8ae60a38a8ee806da9550a5fc5f55a5a9a","unresolved":false,"context_lines":[{"line_number":2420,"context_line":""},{"line_number":2421,"context_line":"class TestOvsDvrNeutronAgentRyu(TestOvsDvrNeutronAgent,"},{"line_number":2422,"context_line":"                                ovs_test_base.OVSRyuTestBase):"},{"line_number":2423,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_198d557b","line":2423,"updated":"2015-08-24 08:45:41.000000000","message":"this should be around L2396","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"742cf9cb65e2cfe5ac8fa6b5e299fff8277498f5","unresolved":false,"context_lines":[{"line_number":2420,"context_line":""},{"line_number":2421,"context_line":"class TestOvsDvrNeutronAgentRyu(TestOvsDvrNeutronAgent,"},{"line_number":2422,"context_line":"                                ovs_test_base.OVSRyuTestBase):"},{"line_number":2423,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":131,"id":"fa1b9901_cdba89e1","line":2423,"in_reply_to":"fa1b9901_198d557b","updated":"2015-08-25 02:46:00.000000000","message":"Done","commit_id":"1e7f0a3febd675baf86fb24d81b97c8d564304f6"}],"neutron/tests/unit/plugins/openvswitch/agent/ovs_test_base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57b0bbd65fae7cc0d7bbe741d53bff5f811eec65","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    _BR_PHYS_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_phys.OVSPhysicalBridge\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class OVSRyuTestBase(OVSAgentTestBase):"},{"line_number":62,"context_line":"    _DRIVER_PACKAGE \u003d _AGENT_PACKAGE + \u0027.openflow.native\u0027"},{"line_number":63,"context_line":"    _BR_INT_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_int.OVSIntegrationBridge\u0027"},{"line_number":64,"context_line":"    _BR_TUN_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_tun.OVSTunnelBridge\u0027"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_03bf8f61","line":61,"updated":"2015-06-11 13:37:57.000000000","message":"In other places, we use \"native\" instead of \"ryu\". Is it better to follow the same naming convention?","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4b555915516d5dd9cc1b65faca9b60a44f6a0f93","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    _BR_PHYS_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_phys.OVSPhysicalBridge\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class OVSRyuTestBase(OVSAgentTestBase):"},{"line_number":62,"context_line":"    _DRIVER_PACKAGE \u003d _AGENT_PACKAGE + \u0027.openflow.native\u0027"},{"line_number":63,"context_line":"    _BR_INT_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_int.OVSIntegrationBridge\u0027"},{"line_number":64,"context_line":"    _BR_TUN_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_tun.OVSTunnelBridge\u0027"}],"source_content_type":"text/x-python","patch_set":116,"id":"3afb71cf_2b549a1f","line":61,"in_reply_to":"3afb71cf_03bf8f61","updated":"2015-06-11 16:38:22.000000000","message":"probably.\nbut s/Ryu/Native/ might be confusing with \"native\" vsctl interface.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"631282a9973caf97fb18251da37824dc682edee4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    _BR_PHYS_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_phys.OVSPhysicalBridge\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class OVSRyuTestBase(OVSAgentTestBase):"},{"line_number":62,"context_line":"    _DRIVER_PACKAGE \u003d _AGENT_PACKAGE + \u0027.openflow.native\u0027"},{"line_number":63,"context_line":"    _BR_INT_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_int.OVSIntegrationBridge\u0027"},{"line_number":64,"context_line":"    _BR_TUN_CLASS \u003d _DRIVER_PACKAGE + \u0027.br_tun.OVSTunnelBridge\u0027"}],"source_content_type":"text/x-python","patch_set":116,"id":"1af86dd1_2f26d7ba","line":61,"in_reply_to":"3afb71cf_2b549a1f","updated":"2015-06-12 10:58:39.000000000","message":"Agree. Ryu is okay. Another option is using NativeOfInterface.","commit_id":"819b58b2f2c482fb9c72fb3f43fb3cd81124f9fd"}],"requirements.txt":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"84df473a663fbad8a838bbc384a9f2d53fe75ccb","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"python-novaclient\u003e\u003d2.18.0,!\u003d2.21.0"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"#ryu\u003e\u003d3.18  # REVISIT(yamamoto): what to do?"}],"source_content_type":"text/plain","patch_set":40,"id":"ba7be1f8_0ea0afa4","line":38,"updated":"2015-02-26 20:14:43.000000000","message":"I think ryu need to be an optional requirement, and should not appear here.  If someone wants to configure its use, they\u0027ll have to install in manually.","commit_id":"a3313f884e4e1bc69f30ec5de32f96cf22b2208b"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9331bb15d74269422ea3cf6e9628c6d9635a4fc2","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"python-novaclient\u003e\u003d2.18.0,!\u003d2.21.0"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"#ryu\u003e\u003d3.18  # REVISIT(yamamoto): what to do?"}],"source_content_type":"text/plain","patch_set":40,"id":"ba7be1f8_ac9cb65e","line":38,"in_reply_to":"ba7be1f8_0ea0afa4","updated":"2015-03-02 02:56:51.000000000","message":"ok.","commit_id":"a3313f884e4e1bc69f30ec5de32f96cf22b2208b"}]}
