)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"cc2be16725bcfee03323f46dd29ace2cc783aef9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-05-23 13:00:32 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix public gateway mac handling"},{"line_number":8,"context_line":"Co-Authored-By: omer.anson@toganetworks.com"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I1395d8443a29998105c7109f337ed5abd88a3f1d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_cb4a5f55","line":8,"range":{"start_line":8,"start_character":1,"end_line":8,"end_character":43},"updated":"2016-05-24 06:33:45.000000000","message":"Missing empty line \n\nWhat about the BUG number","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"2ea372b1c1e453172b64ac9888a04c84942853f5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-05-23 13:00:32 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix public gateway mac handling"},{"line_number":8,"context_line":"Co-Authored-By: omer.anson@toganetworks.com"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I1395d8443a29998105c7109f337ed5abd88a3f1d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_21adf888","line":8,"range":{"start_line":8,"start_character":1,"end_line":8,"end_character":43},"in_reply_to":"bab6814e_cb4a5f55","updated":"2016-05-24 12:46:13.000000000","message":"Done","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"}],"dragonflow/controller/dnat_app.py":[{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4092e2bb0c0856a63ab33cb5c9eb1eaa8763d6d9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.ex_peer_patch_port \u003d cfg.CONF.df_dnat_app.ex_peer_patch_port"},{"line_number":68,"context_line":"        self.send_arp_interval \u003d cfg.CONF.df_dnat_app.send_arp_interval"},{"line_number":69,"context_line":"        self.external_networks \u003d collections.defaultdict(int)"},{"line_number":70,"context_line":"        self.local_floatingips \u003d collections.defaultdict(str)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def switch_features_handler(self, ev):"},{"line_number":73,"context_line":"        self._init_external_bridge()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0e31435a","line":70,"range":{"start_line":70,"start_character":13,"end_line":70,"end_character":30},"updated":"2016-05-23 12:15:15.000000000","message":"I think the old method has it\u0027s own advantage.\n1.  it doesn\u0027t depend on the linux ip stack. We will benefit from this when we using DPDK in the second half of this year.\n2.  Its performance may be better because it will send packet out directly.\nSo we can use the new method and keep the old method as options at the same time. We will use it one day.","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"cc2be16725bcfee03323f46dd29ace2cc783aef9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.ex_peer_patch_port \u003d cfg.CONF.df_dnat_app.ex_peer_patch_port"},{"line_number":68,"context_line":"        self.send_arp_interval \u003d cfg.CONF.df_dnat_app.send_arp_interval"},{"line_number":69,"context_line":"        self.external_networks \u003d collections.defaultdict(int)"},{"line_number":70,"context_line":"        self.local_floatingips \u003d collections.defaultdict(str)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def switch_features_handler(self, ev):"},{"line_number":73,"context_line":"        self._init_external_bridge()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_ebec832b","line":70,"range":{"start_line":70,"start_character":13,"end_line":70,"end_character":30},"in_reply_to":"bab6814e_0e31435a","updated":"2016-05-24 06:33:45.000000000","message":"It could be a good idea to have a configuration\n\nUse Host IP stack for Public GW switching or DF stack","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self._init_external_network_bridge_check()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _check_for_external_network_bridge_mac(self):"},{"line_number":77,"context_line":"        \"\"\"Sending the arp request at the configured interval.\"\"\""},{"line_number":78,"context_line":"        idl \u003d self.vswitch_api.idl"},{"line_number":79,"context_line":"        if not idl:"},{"line_number":80,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_8afcf8b8","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":65},"updated":"2016-05-23 14:10:03.000000000","message":"Is this comment still relevant?","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"2ea372b1c1e453172b64ac9888a04c84942853f5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self._init_external_network_bridge_check()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _check_for_external_network_bridge_mac(self):"},{"line_number":77,"context_line":"        \"\"\"Sending the arp request at the configured interval.\"\"\""},{"line_number":78,"context_line":"        idl \u003d self.vswitch_api.idl"},{"line_number":79,"context_line":"        if not idl:"},{"line_number":80,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e1f7708a","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":65},"in_reply_to":"bab6814e_8afcf8b8","updated":"2016-05-24 12:46:13.000000000","message":"Done","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        if not interface:"},{"line_number":89,"context_line":"            return"},{"line_number":90,"context_line":"        ofport \u003d interface.ofport"},{"line_number":91,"context_line":"        if not ofport:"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":"        if isinstance(ofport, list):"},{"line_number":94,"context_line":"            ofport \u003d ofport[0]"},{"line_number":95,"context_line":"        if ofport \u003c\u003d 0:"},{"line_number":96,"context_line":"            return"},{"line_number":97,"context_line":"        if not interface.mac_in_use[0]:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        if interface.mac_in_use[0] \u003d\u003d \u002700:00:00:00:00:00\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6f23a6bd","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":18},"updated":"2016-05-23 14:10:03.000000000","message":"Why do we care for the ofport? It is not used here.","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"1ceccd99491a160a957a9bd657b56bfb0796529a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        if not interface:"},{"line_number":89,"context_line":"            return"},{"line_number":90,"context_line":"        ofport \u003d interface.ofport"},{"line_number":91,"context_line":"        if not ofport:"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":"        if isinstance(ofport, list):"},{"line_number":94,"context_line":"            ofport \u003d ofport[0]"},{"line_number":95,"context_line":"        if ofport \u003c\u003d 0:"},{"line_number":96,"context_line":"            return"},{"line_number":97,"context_line":"        if not interface.mac_in_use[0]:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        if interface.mac_in_use[0] \u003d\u003d \u002700:00:00:00:00:00\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_917d24b4","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":18},"in_reply_to":"bab6814e_6f23a6bd","updated":"2016-05-24 07:54:39.000000000","message":"It is a sanity check","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"519e1b851919eccf7f342eb2d8b891dd92685d73","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":"        if not interface:"},{"line_number":89,"context_line":"            return"},{"line_number":90,"context_line":"        ofport \u003d interface.ofport"},{"line_number":91,"context_line":"        if not ofport:"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":"        if isinstance(ofport, list):"},{"line_number":94,"context_line":"            ofport \u003d ofport[0]"},{"line_number":95,"context_line":"        if ofport \u003c\u003d 0:"},{"line_number":96,"context_line":"            return"},{"line_number":97,"context_line":"        if not interface.mac_in_use[0]:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        if interface.mac_in_use[0] \u003d\u003d \u002700:00:00:00:00:00\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e612e657","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":18},"in_reply_to":"bab6814e_917d24b4","updated":"2016-05-24 12:41:53.000000000","message":"removing..","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return"},{"line_number":101,"context_line":"        return interface.mac_in_use[0]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _waite_for_external_network_bridge_mac(self):"},{"line_number":104,"context_line":"        mac \u003d self._check_for_external_network_bridge_mac()"},{"line_number":105,"context_line":"        if not mac:"},{"line_number":106,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_4a1fb05a","line":103,"range":{"start_line":103,"start_character":13,"end_line":103,"end_character":14},"updated":"2016-05-23 14:10:03.000000000","message":"Typo: waite -\u003e wait","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"1ceccd99491a160a957a9bd657b56bfb0796529a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return"},{"line_number":101,"context_line":"        return interface.mac_in_use[0]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _waite_for_external_network_bridge_mac(self):"},{"line_number":104,"context_line":"        mac \u003d self._check_for_external_network_bridge_mac()"},{"line_number":105,"context_line":"        if not mac:"},{"line_number":106,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_f1163057","line":103,"range":{"start_line":103,"start_character":13,"end_line":103,"end_character":14},"in_reply_to":"bab6814e_4a1fb05a","updated":"2016-05-24 07:54:39.000000000","message":"Done","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _init_external_bridge(self):"},{"line_number":118,"context_line":"        self.external_ofport \u003d self.vswitch_api.create_patch_port("},{"line_number":119,"context_line":"            self.integration_bridge,"},{"line_number":120,"context_line":"            self.ex_peer_patch_port,"},{"line_number":121,"context_line":"            self.int_peer_patch_port)"},{"line_number":122,"context_line":"        self.vswitch_api.create_patch_port("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_aaebbcda","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":36},"updated":"2016-05-23 14:10:03.000000000","message":"Unless this patch depends on https://review.openstack.org/#/c/319025/, I recommend against this change. It will cause merge issues when both patches are integrated.","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"519e1b851919eccf7f342eb2d8b891dd92685d73","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _init_external_bridge(self):"},{"line_number":118,"context_line":"        self.external_ofport \u003d self.vswitch_api.create_patch_port("},{"line_number":119,"context_line":"            self.integration_bridge,"},{"line_number":120,"context_line":"            self.ex_peer_patch_port,"},{"line_number":121,"context_line":"            self.int_peer_patch_port)"},{"line_number":122,"context_line":"        self.vswitch_api.create_patch_port("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_664c3677","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":36},"in_reply_to":"bab6814e_aaebbcda","updated":"2016-05-24 12:41:53.000000000","message":"Done","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            match\u003dmatch)"},{"line_number":294,"context_line":"        mac \u003d self._check_for_external_network_bridge_mac()"},{"line_number":295,"context_line":"        if mac:"},{"line_number":296,"context_line":"            self._install_dnat_egress_rules(floatingip, mac)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _remove_egress_nat_rules(self, floatingip):"},{"line_number":299,"context_line":"        net \u003d netaddr.IPNetwork(floatingip.external_cidr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0a8be81f","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":60},"updated":"2016-05-23 14:10:03.000000000","message":"If this can happen, you should also register to events from ovsdb, to see when the bridge gets/updates its mac.\n\n(This ability isn\u0027t implemented yet, and maybe should wait for a different patch, since this scenario is very unlikely.)","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"519e1b851919eccf7f342eb2d8b891dd92685d73","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            match\u003dmatch)"},{"line_number":294,"context_line":"        mac \u003d self._check_for_external_network_bridge_mac()"},{"line_number":295,"context_line":"        if mac:"},{"line_number":296,"context_line":"            self._install_dnat_egress_rules(floatingip, mac)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _remove_egress_nat_rules(self, floatingip):"},{"line_number":299,"context_line":"        net \u003d netaddr.IPNetwork(floatingip.external_cidr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a66d7ece","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":60},"in_reply_to":"bab6814e_0a8be81f","updated":"2016-05-24 12:41:53.000000000","message":"will be done later in other patch","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                      status\u003dstatus)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def associate_floatingip(self, floatingip):"},{"line_number":360,"context_line":"        self.local_floatingips[floatingip.name] \u003d floatingip"},{"line_number":361,"context_line":"        self._install_ingress_nat_rules(floatingip)"},{"line_number":362,"context_line":"        self._install_egress_nat_rules(floatingip)"},{"line_number":363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0aec8828","line":360,"updated":"2016-05-23 14:10:03.000000000","message":"Consider associating floating IPs by ID, not name. (See https://review.openstack.org/#/c/315433/)","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"1ceccd99491a160a957a9bd657b56bfb0796529a","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                      status\u003dstatus)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def associate_floatingip(self, floatingip):"},{"line_number":360,"context_line":"        self.local_floatingips[floatingip.name] \u003d floatingip"},{"line_number":361,"context_line":"        self._install_ingress_nat_rules(floatingip)"},{"line_number":362,"context_line":"        self._install_egress_nat_rules(floatingip)"},{"line_number":363,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_5cc0f37c","line":360,"in_reply_to":"bab6814e_0aec8828","updated":"2016-05-24 07:54:39.000000000","message":"will do","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ae620d3a9e48de0c513b580e0ee8d470ec9436c","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        self._install_egress_nat_rules(floatingip)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def disassociate_floatingip(self, floatingip):"},{"line_number":365,"context_line":"        if floatingip.name in self.local_floatingips:"},{"line_number":366,"context_line":"            del self.local_floatingips[floatingip.name]"},{"line_number":367,"context_line":"        self.delete_floatingip(floatingip)"},{"line_number":368,"context_line":"        self.update_floatingip_status("},{"line_number":369,"context_line":"            floatingip, n_const.FLOATINGIP_STATUS_DOWN)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6adb947c","line":366,"range":{"start_line":365,"start_character":0,"end_line":366,"end_character":55},"updated":"2016-05-23 14:10:03.000000000","message":"Consider using pop with default, which does lookup and delete in one operation, rather than two lookups.","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"1ceccd99491a160a957a9bd657b56bfb0796529a","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        self._install_egress_nat_rules(floatingip)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def disassociate_floatingip(self, floatingip):"},{"line_number":365,"context_line":"        if floatingip.name in self.local_floatingips:"},{"line_number":366,"context_line":"            del self.local_floatingips[floatingip.name]"},{"line_number":367,"context_line":"        self.delete_floatingip(floatingip)"},{"line_number":368,"context_line":"        self.update_floatingip_status("},{"line_number":369,"context_line":"            floatingip, n_const.FLOATINGIP_STATUS_DOWN)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_fcce07b6","line":366,"range":{"start_line":365,"start_character":0,"end_line":366,"end_character":55},"in_reply_to":"bab6814e_6adb947c","updated":"2016-05-24 07:54:39.000000000","message":"will do","commit_id":"898d9eb09f480bdba208796e2d2366a6fbc6198c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b95cfbdcb85aa0bf7680e7e90df9302d6aa8fc2b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            return"},{"line_number":87,"context_line":"        if not isinstance(interface, collections.Iterable):"},{"line_number":88,"context_line":"            return"},{"line_number":89,"context_line":"        if \u0027mac_in_use\u0027 not in interface:"},{"line_number":90,"context_line":"            return"},{"line_number":91,"context_line":"        if not interface.mac_in_use[0]:"},{"line_number":92,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_9acfd6af","line":89,"updated":"2016-05-29 11:09:21.000000000","message":"Don\u0027t you mean hasattr(interface, \u0027mac_in_use\u0027)? Can this ever fail?","commit_id":"3253d3fa245cfefdcace54c9ab76beffe9d30702"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"319cd36ae8afd2f98dfe83ee2f142adb30f6406a","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            parser.OFPActionSetField(eth_src\u003dfip_mac),"},{"line_number":251,"context_line":"            parser.OFPActionSetField(eth_dst\u003dnetwork_bridge_mac),"},{"line_number":252,"context_line":"            parser.OFPActionSetField(ipv4_src\u003dfip_ip),"},{"line_number":253,"context_line":"            parser.OFPActionOutput(ofproto.OFPP_NORMAL, 0)]"},{"line_number":254,"context_line":"        inst \u003d [self.get_datapath().ofproto_parser.OFPInstructionActions("},{"line_number":255,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS, actions)]"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_390e5e3b","line":253,"range":{"start_line":253,"start_character":35,"end_line":253,"end_character":54},"updated":"2016-05-26 09:07:48.000000000","message":"I think that it will be best to just send it to the external patch port and not to the NORAML pipeline of the br-int.\n\nBr-ex is any way in NORMAl mode by default.\n\nThis way we avoid another NORMAL pipeline on br-int","commit_id":"3253d3fa245cfefdcace54c9ab76beffe9d30702"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b95cfbdcb85aa0bf7680e7e90df9302d6aa8fc2b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            parser.OFPActionSetField(eth_src\u003dfip_mac),"},{"line_number":251,"context_line":"            parser.OFPActionSetField(eth_dst\u003dnetwork_bridge_mac),"},{"line_number":252,"context_line":"            parser.OFPActionSetField(ipv4_src\u003dfip_ip),"},{"line_number":253,"context_line":"            parser.OFPActionOutput(ofproto.OFPP_NORMAL, 0)]"},{"line_number":254,"context_line":"        inst \u003d [self.get_datapath().ofproto_parser.OFPInstructionActions("},{"line_number":255,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS, actions)]"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_5a3c4e93","line":253,"range":{"start_line":253,"start_character":35,"end_line":253,"end_character":54},"in_reply_to":"bab6814e_390e5e3b","updated":"2016-05-29 11:09:21.000000000","message":"@Eran: +1. Passing to br-ex via the patch port is probably the correct way to go.","commit_id":"3253d3fa245cfefdcace54c9ab76beffe9d30702"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"c0e275fc0cde5745dd043630941a7a0eeaab8ed6","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            parser.OFPActionSetField(eth_src\u003dfip_mac),"},{"line_number":247,"context_line":"            parser.OFPActionSetField(eth_dst\u003dnetwork_bridge_mac),"},{"line_number":248,"context_line":"            parser.OFPActionSetField(ipv4_src\u003dfip_ip),"},{"line_number":249,"context_line":"            parser.OFPActionOutput(ofproto.OFPP_NORMAL, 0)]"},{"line_number":250,"context_line":"        inst \u003d [self.get_datapath().ofproto_parser.OFPInstructionActions("},{"line_number":251,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS, actions)]"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_98f222d1","line":249,"range":{"start_line":249,"start_character":35,"end_line":249,"end_character":54},"updated":"2016-05-30 13:17:39.000000000","message":"Please read comment in last patch you ignored it \nSend to br-ex not to NORMAL","commit_id":"8c09a2495c68f1d0438628a6882630d6d632139e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"66327dcab71ccf849e0d621e87a70d04b849eb9f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            return"},{"line_number":89,"context_line":"        if interface.mac_in_use[0] \u003d\u003d \u002700:00:00:00:00:00\u0027:"},{"line_number":90,"context_line":"            return"},{"line_number":91,"context_line":"        if self.external_ofport is None:"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":"        return interface.mac_in_use[0]"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_56408ba5","line":91,"updated":"2016-05-30 14:04:45.000000000","message":"If this condition is holds, consider calling \u0027get_patch_port_ofport\u0027 in vswitch_api. Otherwise, this will loop forever, and will forever fail on this condition. You should also consider trying to create the port if it failed, and log this error (rate limited logging, so it will be seen, but will not flood.)","commit_id":"120ff7784f0010bb9cd60b29dd171d3c79e9988a"}]}
