)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ba838ca5b8be779bb82c4b73e439229d9a3b3f82","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Today, however, the set of attributes only include the ip address and"},{"line_number":16,"context_line":"the gateway information. Routes other than the default route are lost."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This commit added routes in the set of attributes to be moved. Default"},{"line_number":19,"context_line":"gateway becomes a subset of the routes and is therefore retained by this"},{"line_number":20,"context_line":"change."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fce034c_d7a26bfc","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":17},"updated":"2019-04-18 08:39:15.000000000","message":"nit: adds","commit_id":"d1c812e781bad952521e44ea78620f807ad98fad"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd3fe5b19a0c0feb1579e5d84db91b70a69e9bd8","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                               ip_version\u003dip_version)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        routes \u003d device.route.list_routes(ip_version\u003dip_version)"},{"line_number":273,"context_line":"        # Update routes if necessary"},{"line_number":274,"context_line":"        return ips, routes"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def ensure_flat_bridge(self, network_id, phy_bridge_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_8c333014","line":273,"range":{"start_line":273,"start_character":8,"end_line":273,"end_character":36},"updated":"2018-04-03 21:44:48.000000000","message":"Is this comment appropriate here?","commit_id":"00e53c4013270395f64892b188b3dcc79e3c9777"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd3fe5b19a0c0feb1579e5d84db91b70a69e9bd8","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        if routes:"},{"line_number":397,"context_line":"            for route in routes:"},{"line_number":398,"context_line":"                # safty protection against a route that has no cidr"},{"line_number":399,"context_line":"                # add_route and delete_route requires cidr as the input"},{"line_number":400,"context_line":"                # we also skip the kernel route, because it"},{"line_number":401,"context_line":"                # has been added by kernel when ip address is configured"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_8c1c9078","line":398,"range":{"start_line":398,"start_character":18,"end_line":398,"end_character":23},"updated":"2018-04-03 21:44:48.000000000","message":"safety?","commit_id":"00e53c4013270395f64892b188b3dcc79e3c9777"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd3fe5b19a0c0feb1579e5d84db91b70a69e9bd8","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                dst_device.route.add_route(**route)"},{"line_number":409,"context_line":"                # restore to origin route by setting or deleting  metric_copy"},{"line_number":410,"context_line":"                if metric_copy:"},{"line_number":411,"context_line":"                    route[\u0027metric\u0027] \u003d metric_copy"},{"line_number":412,"context_line":"                else:"},{"line_number":413,"context_line":"                    del route[\u0027metric\u0027]"},{"line_number":414,"context_line":"                src_device.route.delete_route(**route)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_47ac11ec","line":411,"range":{"start_line":411,"start_character":38,"end_line":411,"end_character":49},"updated":"2018-04-03 21:44:48.000000000","message":"Should it be int(metric_copy)?","commit_id":"00e53c4013270395f64892b188b3dcc79e3c9777"},{"author":{"_account_id":18445,"name":"Aihua Edward Li","email":"aihuaedwardli@yahoo.com","username":"aihuaedwardli"},"change_message_id":"e3df01702d4872dc5e8988440ae38dc330e9442b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                dst_device.route.add_route(**route)"},{"line_number":409,"context_line":"                # restore to origin route by setting or deleting  metric_copy"},{"line_number":410,"context_line":"                if metric_copy:"},{"line_number":411,"context_line":"                    route[\u0027metric\u0027] \u003d metric_copy"},{"line_number":412,"context_line":"                else:"},{"line_number":413,"context_line":"                    del route[\u0027metric\u0027]"},{"line_number":414,"context_line":"                src_device.route.delete_route(**route)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_893f65b4","line":411,"range":{"start_line":411,"start_character":38,"end_line":411,"end_character":49},"in_reply_to":"bf659307_47ac11ec","updated":"2018-04-06 04:32:28.000000000","message":"Here we simply restore the route dictionary to what it was before calling add_route, we need to keep its type as it was. We don\u0027t convert it to int.","commit_id":"00e53c4013270395f64892b188b3dcc79e3c9777"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd3fe5b19a0c0feb1579e5d84db91b70a69e9bd8","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                src_device.addr.delete(cidr\u003dip[\u0027cidr\u0027])"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def update_interface_ip_details(self, destination, source):"},{"line_number":422,"context_line":"        # Returns True if there were IPs or a route moved"},{"line_number":423,"context_line":"        updated \u003d False"},{"line_number":424,"context_line":"        for ip_version in (constants.IP_VERSION_4, constants.IP_VERSION_6):"},{"line_number":425,"context_line":"            ips, routes \u003d self.get_interface_details(source, ip_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_276c7dcc","line":422,"range":{"start_line":422,"start_character":44,"end_line":422,"end_character":51},"updated":"2018-04-03 21:44:48.000000000","message":"routes","commit_id":"00e53c4013270395f64892b188b3dcc79e3c9777"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ba838ca5b8be779bb82c4b73e439229d9a3b3f82","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                    continue"},{"line_number":402,"context_line":"                # Ensure that the route can be updated by changing the metric"},{"line_number":403,"context_line":"                metric_copy \u003d route.get(\u0027metric\u0027, None)"},{"line_number":404,"context_line":"                route[\u0027metric\u0027] \u003d int(metric_copy) - 1 if metric_copy else 99"},{"line_number":405,"context_line":"                del route[\u0027dev\u0027]"},{"line_number":406,"context_line":"                dst_device.route.add_route(**route)"},{"line_number":407,"context_line":"                # restore to origin route by setting or deleting metric_copy"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_378baf6e","line":404,"range":{"start_line":404,"start_character":75,"end_line":404,"end_character":77},"updated":"2019-04-18 08:39:15.000000000","message":"maybe You can use some constant for this value","commit_id":"d1c812e781bad952521e44ea78620f807ad98fad"}]}
