)]}'
{"networking_ovn/common/config.py":[{"author":{"_account_id":10237,"name":"Numan Siddique","email":"nusiddiq@redhat.com","username":"numansiddique"},"change_message_id":"c2806891c13ae533450734e586ff718b0894db58","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_floating_ip\u0027,"},{"line_number":104,"context_line":"                default\u003dFalse,"},{"line_number":105,"context_line":"                help\u003d_(\u0027Enable the distributed floating ip. \u0027"},{"line_number":106,"context_line":"                       \u0027If True, the Nat action for floating IP will be done \u0027"},{"line_number":107,"context_line":"                       \u0027locally, not distributed gateway. This will saves the \u0027"},{"line_number":108,"context_line":"                       \u0027path to the external network. This require the user \u0027"},{"line_number":109,"context_line":"                       \u0027to configure the physical network map to connecting \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_c1c356ec","line":106,"updated":"2017-06-06 01:05:02.000000000","message":"Can you refer Nat as NAT (in all other places as well)","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":24438,"name":"Guoshuai Li","email":"liguoshuai1989@gmail.com","username":"Guoshuai"},"change_message_id":"643bc1a99572cd74326da9ffd7a9e2a003ab8cb2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_floating_ip\u0027,"},{"line_number":104,"context_line":"                default\u003dFalse,"},{"line_number":105,"context_line":"                help\u003d_(\u0027Enable the distributed floating ip. \u0027"},{"line_number":106,"context_line":"                       \u0027If True, the Nat action for floating IP will be done \u0027"},{"line_number":107,"context_line":"                       \u0027locally, not distributed gateway. This will saves the \u0027"},{"line_number":108,"context_line":"                       \u0027path to the external network. This require the user \u0027"},{"line_number":109,"context_line":"                       \u0027to configure the physical network map to connecting \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf57530f_146cd134","line":106,"in_reply_to":"df140735_c1c356ec","updated":"2017-09-20 11:56:59.000000000","message":"Done","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":10237,"name":"Numan Siddique","email":"nusiddiq@redhat.com","username":"numansiddique"},"change_message_id":"c2806891c13ae533450734e586ff718b0894db58","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                default\u003dFalse,"},{"line_number":105,"context_line":"                help\u003d_(\u0027Enable the distributed floating ip. \u0027"},{"line_number":106,"context_line":"                       \u0027If True, the Nat action for floating IP will be done \u0027"},{"line_number":107,"context_line":"                       \u0027locally, not distributed gateway. This will saves the \u0027"},{"line_number":108,"context_line":"                       \u0027path to the external network. This require the user \u0027"},{"line_number":109,"context_line":"                       \u0027to configure the physical network map to connecting \u0027"},{"line_number":110,"context_line":"                       \u0027the floating ips network on each compute node.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_61624a0c","line":107,"updated":"2017-06-06 01:05:02.000000000","message":"Can you please rephrase the help text as\n\n\u0027Enable distributed floating ip support.\nIf True, the NAT action for FIPs will be done\nlocally and not in the distributed gateway. This\nsaves the path to the external network. This requires\nthe user to configure the physical network map (i.e ovn-bridge-mappings) on each compute node.\u0027","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":24438,"name":"Guoshuai Li","email":"liguoshuai1989@gmail.com","username":"Guoshuai"},"change_message_id":"643bc1a99572cd74326da9ffd7a9e2a003ab8cb2","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                default\u003dFalse,"},{"line_number":105,"context_line":"                help\u003d_(\u0027Enable the distributed floating ip. \u0027"},{"line_number":106,"context_line":"                       \u0027If True, the Nat action for floating IP will be done \u0027"},{"line_number":107,"context_line":"                       \u0027locally, not distributed gateway. This will saves the \u0027"},{"line_number":108,"context_line":"                       \u0027path to the external network. This require the user \u0027"},{"line_number":109,"context_line":"                       \u0027to configure the physical network map to connecting \u0027"},{"line_number":110,"context_line":"                       \u0027the floating ips network on each compute node.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf57530f_f4681d22","line":107,"in_reply_to":"df140735_61624a0c","updated":"2017-09-20 11:56:59.000000000","message":"Done","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2f8beb57d48e8e08a926b402bac1b09ffd7e3df2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                      \u0027chance - chassis randomly selected\u0027)),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_floating_ip\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d_(\u0027Enable distributed floating ip support. \u0027"},{"line_number":110,"context_line":"                       \u0027If True, the NAT action for FIPs will be done \u0027"},{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_359317a6","line":110,"range":{"start_line":109,"start_character":24,"end_line":110,"end_character":69},"updated":"2017-09-25 15:56:04.000000000","message":"I would change this wording to:\n\n\"Enable distributed floating IP support. If True, the NAT action for floating IPs will be done \"","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"69444044b22af98db540ed030d0ce874cc7d3652","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                      \u0027chance - chassis randomly selected\u0027)),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_floating_ip\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d_(\u0027Enable distributed floating ip support. \u0027"},{"line_number":110,"context_line":"                       \u0027If True, the NAT action for FIPs will be done \u0027"},{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_a36f1b5e","line":110,"range":{"start_line":109,"start_character":24,"end_line":110,"end_character":69},"in_reply_to":"7f515b1d_359317a6","updated":"2017-11-08 07:04:35.000000000","message":"Done","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2f8beb57d48e8e08a926b402bac1b09ffd7e3df2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d_(\u0027Enable distributed floating ip support. \u0027"},{"line_number":110,"context_line":"                       \u0027If True, the NAT action for FIPs will be done \u0027"},{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"},{"line_number":114,"context_line":"                       \u0027(i.e ovn-bridge-mappings) on each compute node.\u0027)),"},{"line_number":115,"context_line":"    cfg.StrOpt(\"vif_type\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_95f3eb0a","line":112,"range":{"start_line":111,"start_character":68,"end_line":112,"end_character":62},"updated":"2017-09-25 15:56:04.000000000","message":"I\u0027m not sure what this describing, can you explain?","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"69444044b22af98db540ed030d0ce874cc7d3652","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d_(\u0027Enable distributed floating ip support. \u0027"},{"line_number":110,"context_line":"                       \u0027If True, the NAT action for FIPs will be done \u0027"},{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"},{"line_number":114,"context_line":"                       \u0027(i.e ovn-bridge-mappings) on each compute node.\u0027)),"},{"line_number":115,"context_line":"    cfg.StrOpt(\"vif_type\","}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_c3a9f77b","line":112,"range":{"start_line":111,"start_character":68,"end_line":112,"end_character":62},"in_reply_to":"7f515b1d_95f3eb0a","updated":"2017-11-08 07:04:35.000000000","message":"I changed \"in the distributed gateway\" to \"in the centralized gateway\", is this clearer now?","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2f8beb57d48e8e08a926b402bac1b09ffd7e3df2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"},{"line_number":114,"context_line":"                       \u0027(i.e ovn-bridge-mappings) on each compute node.\u0027)),"},{"line_number":115,"context_line":"    cfg.StrOpt(\"vif_type\","},{"line_number":116,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":117,"context_line":"               deprecated_reason\u003d\"The port VIF type is now determined based \""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_75cf4fb0","line":114,"range":{"start_line":114,"start_character":25,"end_line":114,"end_character":28},"updated":"2017-09-25 15:56:04.000000000","message":"nit: i.e.","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"69444044b22af98db540ed030d0ce874cc7d3652","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                       \u0027locally and not in the distributed gateway. This \u0027"},{"line_number":112,"context_line":"                       \u0027saves the path to the external network. This requires \u0027"},{"line_number":113,"context_line":"                       \u0027the user to configure the physical network map \u0027"},{"line_number":114,"context_line":"                       \u0027(i.e ovn-bridge-mappings) on each compute node.\u0027)),"},{"line_number":115,"context_line":"    cfg.StrOpt(\"vif_type\","},{"line_number":116,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":117,"context_line":"               deprecated_reason\u003d\"The port VIF type is now determined based \""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_83909f44","line":114,"range":{"start_line":114,"start_character":25,"end_line":114,"end_character":28},"in_reply_to":"7f515b1d_75cf4fb0","updated":"2017-11-08 07:04:35.000000000","message":"Done","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"}],"networking_ovn/l3/l3_ovn.py":[{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"c68d370aa03fae427977e433ea2aca969925c8fd","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                if associate and config.is_ovn_distributed_floating_ip():"},{"line_number":687,"context_line":"                    columns[\u0027logical_port\u0027] \u003d update[\u0027logical_port\u0027]"},{"line_number":688,"context_line":"                    columns[\u0027external_mac\u0027] \u003d \\"},{"line_number":689,"context_line":"                        n_net.get_random_mac(cfg.CONF.base_mac.split(\u0027:\u0027))"},{"line_number":690,"context_line":"                txn.add(fip_apis[\u0027nat\u0027](*nat_rule_args, **columns))"},{"line_number":691,"context_line":"        except Exception:"},{"line_number":692,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_6aed238a","line":689,"range":{"start_line":689,"start_character":24,"end_line":689,"end_character":73},"updated":"2017-05-31 02:55:09.000000000","message":"It\u0027s nicer to use mac of fip port.","commit_id":"34294c30a61884317bdeaf8074a5f497d2917dce"},{"author":{"_account_id":10237,"name":"Numan Siddique","email":"nusiddiq@redhat.com","username":"numansiddique"},"change_message_id":"4955351b2d2013bea44f2aed034a1442454e1f61","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                if associate and config.is_ovn_distributed_floating_ip():"},{"line_number":687,"context_line":"                    columns[\u0027logical_port\u0027] \u003d update[\u0027logical_port\u0027]"},{"line_number":688,"context_line":"                    columns[\u0027external_mac\u0027] \u003d \\"},{"line_number":689,"context_line":"                        n_net.get_random_mac(cfg.CONF.base_mac.split(\u0027:\u0027))"},{"line_number":690,"context_line":"                txn.add(fip_apis[\u0027nat\u0027](*nat_rule_args, **columns))"},{"line_number":691,"context_line":"        except Exception:"},{"line_number":692,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_74d06120","line":689,"range":{"start_line":689,"start_character":24,"end_line":689,"end_character":73},"in_reply_to":"df140735_6aed238a","updated":"2017-05-31 10:58:39.000000000","message":"+1","commit_id":"34294c30a61884317bdeaf8074a5f497d2917dce"},{"author":{"_account_id":10237,"name":"Numan Siddique","email":"nusiddiq@redhat.com","username":"numansiddique"},"change_message_id":"a8f07976d0a38e50b28fdfca53553b209249c658","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                              \u0027%(error)s\u0027, {\u0027id\u0027: fip[\u0027id\u0027], \u0027error\u0027: e})"},{"line_number":647,"context_line":"        return router_ids"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def get_floating_ip_mac(self, context, external_ip):"},{"line_number":650,"context_line":"        filters \u003d {\u0027device_owner\u0027: [n_const.DEVICE_OWNER_FLOATINGIP],"},{"line_number":651,"context_line":"                   \u0027fixed_ips\u0027: {\u0027ip_address\u0027: [external_ip]}}"},{"line_number":652,"context_line":"        ports \u003d self._plugin.get_ports(context, filters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_bc89a975","line":649,"updated":"2017-06-06 01:07:11.000000000","message":"\u0027floatingip\u0027 dict in the create_floatingip function should have \u0027mac\u0027 field right ? \n\nIf mac is present, we can use that instead of getting the port from the db. Can you please check if so.","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":24438,"name":"Guoshuai Li","email":"liguoshuai1989@gmail.com","username":"Guoshuai"},"change_message_id":"643bc1a99572cd74326da9ffd7a9e2a003ab8cb2","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                              \u0027%(error)s\u0027, {\u0027id\u0027: fip[\u0027id\u0027], \u0027error\u0027: e})"},{"line_number":647,"context_line":"        return router_ids"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def get_floating_ip_mac(self, context, external_ip):"},{"line_number":650,"context_line":"        filters \u003d {\u0027device_owner\u0027: [n_const.DEVICE_OWNER_FLOATINGIP],"},{"line_number":651,"context_line":"                   \u0027fixed_ips\u0027: {\u0027ip_address\u0027: [external_ip]}}"},{"line_number":652,"context_line":"        ports \u003d self._plugin.get_ports(context, filters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf57530f_ddb41d38","line":649,"in_reply_to":"df140735_bc89a975","updated":"2017-09-20 11:56:59.000000000","message":"\u0027floatingip\u0027 dict no mac, only ip. mac in floatingip_port db","commit_id":"e7782fcd1eae32c05e1cb04a5571a0c7ee57713b"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"987052c07b3aec44967df54ea9c276a16d142847","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            update_fip[\u0027logical_ip\u0027] \u003d fip[\u0027fixed_ip_address\u0027]"},{"line_number":278,"context_line":"            update_fip[\u0027external_ip\u0027] \u003d fip[\u0027floating_ip_address\u0027]"},{"line_number":279,"context_line":"            update_fip[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":280,"context_line":"            port \u003d self._plugin.get_port(context, fip_db[\u0027floating_port_id\u0027])"},{"line_number":281,"context_line":"            update_fip[\u0027fip_port_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":282,"context_line":"            self._ovn_client.create_floatingip(update_fip, router_id)"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_a02cc398","line":280,"updated":"2017-11-07 10:44:07.000000000","message":"need .elevated(), otherwise there will be permission issue for non-admin user.","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            update_fip[\u0027logical_ip\u0027] \u003d fip[\u0027fixed_ip_address\u0027]"},{"line_number":278,"context_line":"            update_fip[\u0027external_ip\u0027] \u003d fip[\u0027floating_ip_address\u0027]"},{"line_number":279,"context_line":"            update_fip[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":280,"context_line":"            port \u003d self._plugin.get_port(context, fip_db[\u0027floating_port_id\u0027])"},{"line_number":281,"context_line":"            update_fip[\u0027fip_port_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":282,"context_line":"            self._ovn_client.create_floatingip(update_fip, router_id)"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_c3f0d793","line":280,"in_reply_to":"3f4b6375_a02cc398","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"987052c07b3aec44967df54ea9c276a16d142847","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            update_fip[\u0027logical_ip\u0027] \u003d fip[\u0027fixed_ip_address\u0027]"},{"line_number":338,"context_line":"            update_fip[\u0027external_ip\u0027] \u003d fip[\u0027floating_ip_address\u0027]"},{"line_number":339,"context_line":"            update_fip[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":340,"context_line":"            port \u003d self._plugin.get_port(context, fip_db[\u0027floating_port_id\u0027])"},{"line_number":341,"context_line":"            update_fip[\u0027fip_port_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":342,"context_line":"            try:"},{"line_number":343,"context_line":"                self._ovn_client.update_floatingip("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_60224ba5","line":340,"updated":"2017-11-07 10:44:07.000000000","message":"ditto","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            update_fip[\u0027logical_ip\u0027] \u003d fip[\u0027fixed_ip_address\u0027]"},{"line_number":338,"context_line":"            update_fip[\u0027external_ip\u0027] \u003d fip[\u0027floating_ip_address\u0027]"},{"line_number":339,"context_line":"            update_fip[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":340,"context_line":"            port \u003d self._plugin.get_port(context, fip_db[\u0027floating_port_id\u0027])"},{"line_number":341,"context_line":"            update_fip[\u0027fip_port_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":342,"context_line":"            try:"},{"line_number":343,"context_line":"                self._ovn_client.update_floatingip("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_632fe3f5","line":340,"in_reply_to":"3f4b6375_60224ba5","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"}],"networking_ovn/ovn_db_sync.py":[{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"92562527c7cce151089320bf44ec30dd74d6f319","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            if config.is_ovn_distributed_floating_ip():"},{"line_number":349,"context_line":"                columns[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":350,"context_line":"                fip_db \u003d self.l3_plugin._get_floatingip(ctx, fip[\u0027id\u0027])"},{"line_number":351,"context_line":"                port \u003d self.core_plugin.get_port(ctx,"},{"line_number":352,"context_line":"                                                 fip_db[\u0027floating_port_id\u0027])"},{"line_number":353,"context_line":"                columns[\u0027external_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":354,"context_line":"            db_extends[fip[\u0027router_id\u0027]][\u0027fips\u0027].append(columns)"},{"line_number":355,"context_line":"        interfaces \u003d self.l3_plugin._get_sync_interfaces("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_6b05757a","line":352,"range":{"start_line":351,"start_character":23,"end_line":352,"end_character":76},"updated":"2017-10-10 02:39:31.000000000","message":"To reduce database access in loop, it\u0027s better use get_ports outside for batch getting.","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            if config.is_ovn_distributed_floating_ip():"},{"line_number":349,"context_line":"                columns[\u0027logical_port\u0027] \u003d fip[\u0027port_id\u0027]"},{"line_number":350,"context_line":"                fip_db \u003d self.l3_plugin._get_floatingip(ctx, fip[\u0027id\u0027])"},{"line_number":351,"context_line":"                port \u003d self.core_plugin.get_port(ctx,"},{"line_number":352,"context_line":"                                                 fip_db[\u0027floating_port_id\u0027])"},{"line_number":353,"context_line":"                columns[\u0027external_mac\u0027] \u003d port[\u0027mac_address\u0027]"},{"line_number":354,"context_line":"            db_extends[fip[\u0027router_id\u0027]][\u0027fips\u0027].append(columns)"},{"line_number":355,"context_line":"        interfaces \u003d self.l3_plugin._get_sync_interfaces("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_83077f82","line":352,"range":{"start_line":351,"start_character":23,"end_line":352,"end_character":76},"in_reply_to":"5f4e5783_6b05757a","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2f8beb57d48e8e08a926b402bac1b09ffd7e3df2","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                            columns \u003d {\u0027type\u0027: \u0027dnat_and_snat\u0027,"},{"line_number":545,"context_line":"                                       \u0027logical_ip\u0027: nat[\u0027logical_ip\u0027],"},{"line_number":546,"context_line":"                                       \u0027external_ip\u0027: nat[\u0027external_ip\u0027]}"},{"line_number":547,"context_line":"                            if nat.get(\u0027logical_port\u0027, None):"},{"line_number":548,"context_line":"                                columns[\u0027logical_port\u0027] \u003d nat[\u0027logical_port\u0027]"},{"line_number":549,"context_line":"                            if nat.get(\u0027external_mac\u0027, None):"},{"line_number":550,"context_line":"                                columns[\u0027external_mac\u0027] \u003d nat[\u0027external_mac\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_95288b34","line":547,"updated":"2017-09-25 15:56:04.000000000","message":"nit: don\u0027t need the None here as it\u0027s the default return value if not present","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"69444044b22af98db540ed030d0ce874cc7d3652","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                            columns \u003d {\u0027type\u0027: \u0027dnat_and_snat\u0027,"},{"line_number":545,"context_line":"                                       \u0027logical_ip\u0027: nat[\u0027logical_ip\u0027],"},{"line_number":546,"context_line":"                                       \u0027external_ip\u0027: nat[\u0027external_ip\u0027]}"},{"line_number":547,"context_line":"                            if nat.get(\u0027logical_port\u0027, None):"},{"line_number":548,"context_line":"                                columns[\u0027logical_port\u0027] \u003d nat[\u0027logical_port\u0027]"},{"line_number":549,"context_line":"                            if nat.get(\u0027external_mac\u0027, None):"},{"line_number":550,"context_line":"                                columns[\u0027external_mac\u0027] \u003d nat[\u0027external_mac\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_e3c75344","line":547,"in_reply_to":"7f515b1d_95288b34","updated":"2017-11-08 07:04:35.000000000","message":"Done","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2f8beb57d48e8e08a926b402bac1b09ffd7e3df2","unresolved":false,"context_lines":[{"line_number":546,"context_line":"                                       \u0027external_ip\u0027: nat[\u0027external_ip\u0027]}"},{"line_number":547,"context_line":"                            if nat.get(\u0027logical_port\u0027, None):"},{"line_number":548,"context_line":"                                columns[\u0027logical_port\u0027] \u003d nat[\u0027logical_port\u0027]"},{"line_number":549,"context_line":"                            if nat.get(\u0027external_mac\u0027, None):"},{"line_number":550,"context_line":"                                columns[\u0027external_mac\u0027] \u003d nat[\u0027external_mac\u0027]"},{"line_number":551,"context_line":"                            txn.add(self.ovn_api.add_nat_rule_in_lrouter("},{"line_number":552,"context_line":"                                utils.ovn_name(fip[\u0027id\u0027]), **columns))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_55221354","line":549,"updated":"2017-09-25 15:56:04.000000000","message":"Here too","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"69444044b22af98db540ed030d0ce874cc7d3652","unresolved":false,"context_lines":[{"line_number":546,"context_line":"                                       \u0027external_ip\u0027: nat[\u0027external_ip\u0027]}"},{"line_number":547,"context_line":"                            if nat.get(\u0027logical_port\u0027, None):"},{"line_number":548,"context_line":"                                columns[\u0027logical_port\u0027] \u003d nat[\u0027logical_port\u0027]"},{"line_number":549,"context_line":"                            if nat.get(\u0027external_mac\u0027, None):"},{"line_number":550,"context_line":"                                columns[\u0027external_mac\u0027] \u003d nat[\u0027external_mac\u0027]"},{"line_number":551,"context_line":"                            txn.add(self.ovn_api.add_nat_rule_in_lrouter("},{"line_number":552,"context_line":"                                utils.ovn_name(fip[\u0027id\u0027]), **columns))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_c3c21734","line":549,"in_reply_to":"7f515b1d_55221354","updated":"2017-11-08 07:04:35.000000000","message":"Done","commit_id":"4e13bc7ab9bcb47811901a6e8c6a3d83f8d39eae"}],"networking_ovn/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a35de72709f0bbfecabada71ae3b13bacd8fdf1c","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                           \u0027type\u0027: nat.type}"},{"line_number":192,"context_line":"                if nat.type \u003d\u003d \u0027dnat_and_snat\u0027:"},{"line_number":193,"context_line":"                    if nat.external_mac:"},{"line_number":194,"context_line":"                        columns[\u0027external_mac\u0027] \u003d nat.external_mac[0]"},{"line_number":195,"context_line":"                    if nat.logical_port:"},{"line_number":196,"context_line":"                        columns[\u0027logical_port\u0027] \u003d nat.logical_port[0]"},{"line_number":197,"context_line":"                    dnat_and_snats.append(columns)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_3422fe53","line":194,"updated":"2017-11-13 16:30:36.000000000","message":"Nothing to do here, just pointing out in case other reviewers have the same doubt.\n\nI thought it was just a string rather than a list (as per [0]):\n\n\"external_mac: optional string\"\n\nBut when I list the NAT table, it is indeed a list:\n\n $ ovn-nbctl list NAT\n ...\n external_mac        : []\n logical_port        : []\n ...\n\n[0] http://openvswitch.org/support/dist-docs/ovn-nb.5.html","commit_id":"15026ae8aa9834ac3cc69756e7b03f7dfaf1b6d6"},{"author":{"_account_id":24438,"name":"Guoshuai Li","email":"liguoshuai1989@gmail.com","username":"Guoshuai"},"change_message_id":"ee7833292e9355cbfddf3f11ac625bcea9c05469","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                           \u0027type\u0027: nat.type}"},{"line_number":192,"context_line":"                if nat.type \u003d\u003d \u0027dnat_and_snat\u0027:"},{"line_number":193,"context_line":"                    if nat.external_mac:"},{"line_number":194,"context_line":"                        columns[\u0027external_mac\u0027] \u003d nat.external_mac[0]"},{"line_number":195,"context_line":"                    if nat.logical_port:"},{"line_number":196,"context_line":"                        columns[\u0027logical_port\u0027] \u003d nat.logical_port[0]"},{"line_number":197,"context_line":"                    dnat_and_snats.append(columns)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_435a54f3","line":194,"in_reply_to":"1f485f77_3422fe53","updated":"2017-11-14 03:55:17.000000000","message":"Hi, Lucas,\n\nI try to analyze the next, this may be because the schema is configured ‘\"min\": 0,’:\nhttps://github.com/openvswitch/ovs/blob/master/ovn/ovn-nb.ovsschema#L247\n\nthe default value is 1:\nhttps://github.com/openvswitch/ovs/blob/6c7050b59c50f060492e47126ca43dc6113e5860/python/ovs/db/types.py#L454\n\nAnd at translation, \u0027n_min! \u003d 1\u0027 is \u0027set\u0027:\nhttps://github.com/openvswitch/ovs/blob/6c7050b59c50f060492e47126ca43dc6113e5860/python/ovs/db/types.py#L497","commit_id":"15026ae8aa9834ac3cc69756e7b03f7dfaf1b6d6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"5911ca754ee6b1540d27c2ba5f375fb3c3db9a31","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                           \u0027type\u0027: nat.type}"},{"line_number":192,"context_line":"                if nat.type \u003d\u003d \u0027dnat_and_snat\u0027:"},{"line_number":193,"context_line":"                    if nat.external_mac:"},{"line_number":194,"context_line":"                        columns[\u0027external_mac\u0027] \u003d nat.external_mac[0]"},{"line_number":195,"context_line":"                    if nat.logical_port:"},{"line_number":196,"context_line":"                        columns[\u0027logical_port\u0027] \u003d nat.logical_port[0]"},{"line_number":197,"context_line":"                    dnat_and_snats.append(columns)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_ff0d4835","line":194,"in_reply_to":"1f485f77_435a54f3","updated":"2017-11-14 10:33:43.000000000","message":"Thanks for the pointers Guoshuai, yeah it\u0027s a little strange and the documentation made me misinterpret that field type. So I just wanted to add this comment in case other reviwers look at it and wonder why we are always picking the first element of that list.","commit_id":"15026ae8aa9834ac3cc69756e7b03f7dfaf1b6d6"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"816606e9b1b3a2143e7a21eb1eb3065fe9bd0712","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                           \u0027type\u0027: nat.type}"},{"line_number":192,"context_line":"                if nat.type \u003d\u003d \u0027dnat_and_snat\u0027:"},{"line_number":193,"context_line":"                    if nat.external_mac:"},{"line_number":194,"context_line":"                        columns[\u0027external_mac\u0027] \u003d nat.external_mac[0]"},{"line_number":195,"context_line":"                    if nat.logical_port:"},{"line_number":196,"context_line":"                        columns[\u0027logical_port\u0027] \u003d nat.logical_port[0]"},{"line_number":197,"context_line":"                    dnat_and_snats.append(columns)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_9f9bf4c7","line":194,"in_reply_to":"1f485f77_ff0d4835","updated":"2017-11-14 10:36:51.000000000","message":"It makes sense.","commit_id":"15026ae8aa9834ac3cc69756e7b03f7dfaf1b6d6"}],"networking_ovn/tests/functional/test_ovn_db_sync.py":[{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"987052c07b3aec44967df54ea9c276a16d142847","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.match_old_mac_dhcp_subnets \u003d []"},{"line_number":73,"context_line":"        ovn_config.cfg.CONF.set_override(\u0027ovn_metadata_enabled\u0027, True,"},{"line_number":74,"context_line":"                                         group\u003d\u0027ovn\u0027)"},{"line_number":75,"context_line":"        cfg.CONF.set_override(\u0027enable_distributed_floating_ip\u0027, True, \u0027ovn\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _api_for_resource(self, resource):"},{"line_number":78,"context_line":"        if resource in [\u0027security-groups\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_20ab33d6","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":76},"updated":"2017-11-07 10:44:07.000000000","message":"I suggest move it to TestOvnNbSyncOverTcp then we can test both True and False.","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.match_old_mac_dhcp_subnets \u003d []"},{"line_number":73,"context_line":"        ovn_config.cfg.CONF.set_override(\u0027ovn_metadata_enabled\u0027, True,"},{"line_number":74,"context_line":"                                         group\u003d\u0027ovn\u0027)"},{"line_number":75,"context_line":"        cfg.CONF.set_override(\u0027enable_distributed_floating_ip\u0027, True, \u0027ovn\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _api_for_resource(self, resource):"},{"line_number":78,"context_line":"        if resource in [\u0027security-groups\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_c34577b5","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":76},"in_reply_to":"3f4b6375_20ab33d6","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"987052c07b3aec44967df54ea9c276a16d142847","unresolved":false,"context_lines":[{"line_number":986,"context_line":"        fips \u003d self._list(\u0027floatingips\u0027)"},{"line_number":987,"context_line":"        for fip in fips[\u0027floatingips\u0027]:"},{"line_number":988,"context_line":"            if fip[\u0027router_id\u0027]:"},{"line_number":989,"context_line":"                mac_address \u003d \u0027\u0027"},{"line_number":990,"context_line":"                for fport in self._list(\u0027ports\u0027)[\u0027ports\u0027]:"},{"line_number":991,"context_line":"                    for address in fport[\u0027fixed_ips\u0027]:"},{"line_number":992,"context_line":"                        if address[\u0027ip_address\u0027] \u003d\u003d fip[\u0027floating_ip_address\u0027]:"},{"line_number":993,"context_line":"                            mac_address \u003d fport[\u0027mac_address\u0027]"},{"line_number":994,"context_line":"                db_nats[fip[\u0027router_id\u0027]].append("},{"line_number":995,"context_line":"                    fip[\u0027floating_ip_address\u0027] + fip[\u0027fixed_ip_address\u0027] +"},{"line_number":996,"context_line":"                    \u0027dnat_and_snat\u0027 + mac_address + fip[\u0027port_id\u0027])"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        _plugin_nb_ovn \u003d self.mech_driver._nb_ovn"},{"line_number":999,"context_line":"        plugin_lrouter_ids \u003d ["}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_40c74f97","line":996,"range":{"start_line":989,"start_character":16,"end_line":996,"end_character":67},"updated":"2017-11-07 10:44:07.000000000","message":"because of the suggestion above, this code need adjustion","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":986,"context_line":"        fips \u003d self._list(\u0027floatingips\u0027)"},{"line_number":987,"context_line":"        for fip in fips[\u0027floatingips\u0027]:"},{"line_number":988,"context_line":"            if fip[\u0027router_id\u0027]:"},{"line_number":989,"context_line":"                mac_address \u003d \u0027\u0027"},{"line_number":990,"context_line":"                for fport in self._list(\u0027ports\u0027)[\u0027ports\u0027]:"},{"line_number":991,"context_line":"                    for address in fport[\u0027fixed_ips\u0027]:"},{"line_number":992,"context_line":"                        if address[\u0027ip_address\u0027] \u003d\u003d fip[\u0027floating_ip_address\u0027]:"},{"line_number":993,"context_line":"                            mac_address \u003d fport[\u0027mac_address\u0027]"},{"line_number":994,"context_line":"                db_nats[fip[\u0027router_id\u0027]].append("},{"line_number":995,"context_line":"                    fip[\u0027floating_ip_address\u0027] + fip[\u0027fixed_ip_address\u0027] +"},{"line_number":996,"context_line":"                    \u0027dnat_and_snat\u0027 + mac_address + fip[\u0027port_id\u0027])"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        _plugin_nb_ovn \u003d self.mech_driver._nb_ovn"},{"line_number":999,"context_line":"        plugin_lrouter_ids \u003d ["}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_a3403ba3","line":996,"range":{"start_line":989,"start_character":16,"end_line":996,"end_character":67},"in_reply_to":"3f4b6375_40c74f97","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"}],"networking_ovn/tests/unit/ovsdb/test_impl_idl_ovn.py":[{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"987052c07b3aec44967df54ea9c276a16d142847","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                 {\u0027external_ip\u0027: \u002720.0.2.1\u0027, \u0027logical_ip\u0027: \u002710.0.0.0/24\u0027,"},{"line_number":188,"context_line":"                  \u0027type\u0027: \u0027snat\u0027},"},{"line_number":189,"context_line":"                 {\u0027external_ip\u0027: \u002720.0.2.4\u0027, \u0027logical_ip\u0027: \u002710.0.0.4\u0027,"},{"line_number":190,"context_line":"                  \u0027type\u0027: \u0027dnat_and_snat\u0027, \u0027external_mac\u0027: \u002700:01:02:03:04:05\u0027,"},{"line_number":191,"context_line":"                  \u0027logical_port\u0027: \u0027lsp-id-001\u0027}],"},{"line_number":192,"context_line":"        \u0027acls\u0027: ["},{"line_number":193,"context_line":"            {\u0027unit_test_id\u0027: 1,"},{"line_number":194,"context_line":"             \u0027action\u0027: \u0027allow-related\u0027, \u0027direction\u0027: \u0027from-lport\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_201e930b","line":191,"range":{"start_line":190,"start_character":43,"end_line":191,"end_character":46},"updated":"2017-11-07 10:44:07.000000000","message":"It\u0027s better to add an new dnat_and_snat, centralized fip testing should not be dropped.","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"3ff66dd2cc4904a024a7a62891b911cf5b16d85b","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                 {\u0027external_ip\u0027: \u002720.0.2.1\u0027, \u0027logical_ip\u0027: \u002710.0.0.0/24\u0027,"},{"line_number":188,"context_line":"                  \u0027type\u0027: \u0027snat\u0027},"},{"line_number":189,"context_line":"                 {\u0027external_ip\u0027: \u002720.0.2.4\u0027, \u0027logical_ip\u0027: \u002710.0.0.4\u0027,"},{"line_number":190,"context_line":"                  \u0027type\u0027: \u0027dnat_and_snat\u0027, \u0027external_mac\u0027: \u002700:01:02:03:04:05\u0027,"},{"line_number":191,"context_line":"                  \u0027logical_port\u0027: \u0027lsp-id-001\u0027}],"},{"line_number":192,"context_line":"        \u0027acls\u0027: ["},{"line_number":193,"context_line":"            {\u0027unit_test_id\u0027: 1,"},{"line_number":194,"context_line":"             \u0027action\u0027: \u0027allow-related\u0027, \u0027direction\u0027: \u0027from-lport\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_631803d2","line":191,"range":{"start_line":190,"start_character":43,"end_line":191,"end_character":46},"in_reply_to":"3f4b6375_201e930b","updated":"2017-11-08 07:05:42.000000000","message":"Done","commit_id":"91f7c0043b955779c74c1c5eacc15334eae0c250"}]}
