)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"06cf601ae0443880fd778afadaa5cea3c116721f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delete gateway conntrack state when remove external gateway."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fixed the problem that a gateway ip conntrack state not cleared when user clears a router external gateway."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I77f22d9504430259b01366e6296a99ba1cd6a046"},{"line_number":12,"context_line":"Closes-Bug: #1488730"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_723c7a2f","line":9,"updated":"2015-08-28 09:10:22.000000000","message":"message lines should be wrapped at 72 characters.","commit_id":"2b75e4a809c540b0cc7890259967defc57b95d80"}],"neutron/agent/l3/ha_router.py":[{"author":{"_account_id":15910,"name":"Perry","email":"panxia6679@sina.com","username":"panxia6679sina.com"},"change_message_id":"1d84c88244372bd5849cafb38ef7c99dfa287abd","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                                                       interface_name)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete(self, agent):"},{"line_number":365,"context_line":"        super(HaRouter, self).delete(agent)"},{"line_number":366,"context_line":"        self.destroy_state_change_monitor(self.process_monitor)"},{"line_number":367,"context_line":"        self.ha_network_removed()"},{"line_number":368,"context_line":"        self.disable_keepalived()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_b07b9027","line":365,"range":{"start_line":365,"start_character":8,"end_line":365,"end_character":36},"updated":"2016-10-13 10:01:46.000000000","message":"the fix introduced bug 1615947. I saw the changes to remove conntrack state in router_info.py. Why was the need to up the line?","commit_id":"37430d4bd096a04a0b3e23165ac244ac1f47a774"}],"neutron/agent/l3/router_info.py":[{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"368a431b752901594253626ab03d33626ada8383","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        device \u003d ip_lib.IPDevice(interface_name, namespace\u003dself.ns_name)"},{"line_number":540,"context_line":"        for ip_addr in ex_gw_port[\u0027fixed_ips\u0027]:"},{"line_number":541,"context_line":"            ex_gw_ip \u003d ip_addr[\u0027ip_address\u0027]"},{"line_number":542,"context_line":"            device.delete_addr_and_conntrack_state(ex_gw_ip)"},{"line_number":543,"context_line":"        self.driver.unplug(interface_name,"},{"line_number":544,"context_line":"                           bridge\u003dself.agent_conf.external_network_bridge,"},{"line_number":545,"context_line":"                           namespace\u003dself.ns_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_11986e77","line":542,"updated":"2015-08-29 06:46:51.000000000","message":"you can directly use \u0027ip_addr[\u0027ip_address\u0027]\u0027, no need add a variable","commit_id":"2b75e4a809c540b0cc7890259967defc57b95d80"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f3468d6bcf82dea38e28ea953db9c4fa306f75fe","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        device.delete_addr_and_conntrack_state(ip_cidr)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def remove_external_gateway_ip(self, device, ip_cidr):"},{"line_number":206,"context_line":"        device.delete_addr_and_conntrack_state(ip_cidr, del_addr\u003dFalse)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_router_cidrs(self, device):"},{"line_number":209,"context_line":"        return set([addr[\u0027cidr\u0027] for addr in device.addr.list()])"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_c965341e","line":206,"updated":"2015-09-06 13:38:38.000000000","message":"external gateway ip has be removed, why do you set del_addr\u003dFalse?","commit_id":"766a294a609fb6a6df812270d6217e132dcf578d"},{"author":{"_account_id":18085,"name":"Yi Zhao","email":"zhaoyi_yewu@cmss.chinamobile.com","username":"willyzhao"},"change_message_id":"f8286428076abfcf907a5c2cd9cce6bb183be236","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        device.delete_addr_and_conntrack_state(ip_cidr)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def remove_external_gateway_ip(self, device, ip_cidr):"},{"line_number":206,"context_line":"        device.delete_addr_and_conntrack_state(ip_cidr, del_addr\u003dFalse)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_router_cidrs(self, device):"},{"line_number":209,"context_line":"        return set([addr[\u0027cidr\u0027] for addr in device.addr.list()])"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_1fd9eb22","line":206,"in_reply_to":"da20952f_c965341e","updated":"2015-09-08 09:59:49.000000000","message":"In the functional case: \"test_ha_router_lifecycle\", the external gateway ip address will be deleted (through keepalived) before method: \"external_gateway_removed\" is called. If we try to clear the gateway ip address again, it will throw exception.\n\nAnyway, I will try to find out workaround.","commit_id":"766a294a609fb6a6df812270d6217e132dcf578d"}]}
