)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"a4d354db1a8f0d9dcf5a416a8c077d92fc24bf20","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joe Mills \u003cjoe@midokura.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-26 09:45:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Blackhole traffic not destined to existing port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Add new route to blackhole traffic to external networks by default."},{"line_number":10,"context_line":"* Add new routes for individual VMs deployed on external networks,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2BaVQ%3D","line":7,"updated":"2013-11-26 11:52:07.000000000","message":"Can you add midonet to the title.","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"0fb2c6dbae77b90eaf947193b6a2c647a72ce72b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joe Mills \u003cjoe@midokura.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-26 09:45:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Blackhole traffic not destined to existing port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Add new route to blackhole traffic to external networks by default."},{"line_number":10,"context_line":"* Add new routes for individual VMs deployed on external networks,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2BVBE%3D","line":7,"in_reply_to":"AAAATn%2F%2BaVQ%3D","updated":"2013-11-27 10:40:06.000000000","message":"Done","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"}],"neutron/plugins/midonet/plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"6df05599f204abe7c7ddf539d252786e3cc7cd04","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def _is_fip_port(port):"},{"line_number":157,"context_line":"    \"\"\"Check whether the given port is an administrative port for"},{"line_number":158,"context_line":"    floating IP creation"},{"line_number":159,"context_line":"    \"\"\""},{"line_number":160,"context_line":"    device_owner \u003d port[\u0027device_owner\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BaCw%3D","line":157,"updated":"2013-11-26 13:04:35.000000000","message":"Nit: PEP257:  docstring should be one line summary, with period, and then additional lines (separated by a blank line).","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"0fb2c6dbae77b90eaf947193b6a2c647a72ce72b","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def _is_fip_port(port):"},{"line_number":157,"context_line":"    \"\"\"Check whether the given port is an administrative port for"},{"line_number":158,"context_line":"    floating IP creation"},{"line_number":159,"context_line":"    \"\"\""},{"line_number":160,"context_line":"    device_owner \u003d port[\u0027device_owner\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BVBc%3D","line":157,"in_reply_to":"AAAATn%2F%2BaCw%3D","updated":"2013-11-27 10:40:06.000000000","message":"Done","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"6df05599f204abe7c7ddf539d252786e3cc7cd04","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _is_vif_port(port):"},{"line_number":165,"context_line":"    \"\"\"Check whether the given port is a standard VIF port.\"\"\""},{"line_number":166,"context_line":"    return (not _is_dhcp_port(port) and"},{"line_number":167,"context_line":"            not _is_fip_port(port) and"},{"line_number":168,"context_line":"            not _is_router_gw_port(port) and"},{"line_number":169,"context_line":"            not _is_router_interface_port(port))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BaB8%3D","line":166,"updated":"2013-11-26 13:04:35.000000000","message":"nit: would it be clearer to say:\n\nreturn not (_is_dhcp_port(port) or _is_fip_port(port) or \n            _is_router_gw_port(port) or _is_router_interface_port(port))\n\nAlternately, it may be more efficient to do:\n\n    device_owner \u003d port[\u0027device_owner\u0027]\n    return not _is_dhcp_port(port) and device_owner not in [l3_db.DEVICE_OWNER_FLOATINGIP, l3_db.DEVICE_OWNER_ROUTER_GW, l3_db.DEVICE_OWNER_ROUTER_INTF]\n\nJust something to consider.","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"0fb2c6dbae77b90eaf947193b6a2c647a72ce72b","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _is_vif_port(port):"},{"line_number":165,"context_line":"    \"\"\"Check whether the given port is a standard VIF port.\"\"\""},{"line_number":166,"context_line":"    return (not _is_dhcp_port(port) and"},{"line_number":167,"context_line":"            not _is_fip_port(port) and"},{"line_number":168,"context_line":"            not _is_router_gw_port(port) and"},{"line_number":169,"context_line":"            not _is_router_interface_port(port))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BVBQ%3D","line":166,"in_reply_to":"AAAATn%2F%2BaB8%3D","updated":"2013-11-27 10:40:06.000000000","message":"Thanks for the suggestion. I went with the first alternative.","commit_id":"fd555a42ab2dbe97e456d07af8304b455dd810b8"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"11716297250811f0a90d87a5555a8b30e074a27e","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"            # For external network, link the bridge to the provider router."},{"line_number":432,"context_line":"            if net[ext_net.EXTERNAL]:"},{"line_number":433,"context_line":"                self._link_to_provider_router(bridge, gateway_ip, cidr)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        LOG.debug(_(\"MidonetPluginV2.create_subnet exiting: sn_entry\u003d%r\"),"},{"line_number":436,"context_line":"                  sn_entry)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FtzI%3D","line":433,"updated":"2014-01-09 09:28:01.000000000","message":"could we create subnet without external network first and then enable external ? is it necessary to need a unit test to cover it ?","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"ac8904c6678c94ddbba5c36b8fbf938c5e1de109","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                    if net[ext_net.EXTERNAL]:"},{"line_number":591,"context_line":"                        for ip in port_data[\"fixed_ips\"]:"},{"line_number":592,"context_line":"                            subnet \u003d self._get_subnet(context, ip[\"subnet_id\"])"},{"line_number":593,"context_line":"                            if subnet[\"ip_version\"] \u003d\u003d 6:"},{"line_number":594,"context_line":"                                continue"},{"line_number":595,"context_line":"                            self._add_route_to_provider(bridge,"},{"line_number":596,"context_line":"                                                        ip[\"ip_address\"])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FuSs%3D","line":593,"updated":"2014-01-09 07:07:19.000000000","message":"I think it should be defined as constant value","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"ac8904c6678c94ddbba5c36b8fbf938c5e1de109","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        provider_router \u003d self._get_provider_router()"},{"line_number":965,"context_line":"        for route in provider_router.get_routes():"},{"line_number":966,"context_line":"            if (route.get_dst_network_addr() \u003d\u003d ip and"},{"line_number":967,"context_line":"                    route.get_dst_network_length() \u003d\u003d 32):"},{"line_number":968,"context_line":"                self.client.delete_route(route.get_id())"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def _link_to_provider_router(self, bridge, gw_ip, cidr):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FuSo%3D","line":967,"updated":"2014-01-09 07:07:19.000000000","message":"Better use constant instead of number","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"ac8904c6678c94ddbba5c36b8fbf938c5e1de109","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        # add a route for the subnet in the gateway router. We \u0027BlackHole\u0027 all"},{"line_number":991,"context_line":"        # of the traffic to this subnet because legitimate targets will have"},{"line_number":992,"context_line":"        # a more specific route. We drop illegitimate traffic for performance."},{"line_number":993,"context_line":"        self.client.add_router_route(provider_router, type\u003d\u0027BlackHole\u0027,"},{"line_number":994,"context_line":"                                     src_network_addr\u003d\u00270.0.0.0\u0027,"},{"line_number":995,"context_line":"                                     src_network_length\u003d0,"},{"line_number":996,"context_line":"                                     dst_network_addr\u003dnet_addr,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FuSk%3D","line":993,"updated":"2014-01-09 07:07:19.000000000","message":"Constant?","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"11716297250811f0a90d87a5555a8b30e074a27e","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        # add a route for the subnet in the gateway router. We \u0027BlackHole\u0027 all"},{"line_number":991,"context_line":"        # of the traffic to this subnet because legitimate targets will have"},{"line_number":992,"context_line":"        # a more specific route. We drop illegitimate traffic for performance."},{"line_number":993,"context_line":"        self.client.add_router_route(provider_router, type\u003d\u0027BlackHole\u0027,"},{"line_number":994,"context_line":"                                     src_network_addr\u003d\u00270.0.0.0\u0027,"},{"line_number":995,"context_line":"                                     src_network_length\u003d0,"},{"line_number":996,"context_line":"                                     dst_network_addr\u003dnet_addr,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Ft1k%3D","line":993,"updated":"2014-01-09 09:28:01.000000000","message":"should we also remove this BlackHole route when there is no vif_port in one subnet ?","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"}],"neutron/tests/unit/midonet/test_midonet_plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"25a3475041b62373a1307c37224a2f0a0aaf3922","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def test_floatingip_with_invalid_create_port(self):"},{"line_number":83,"context_line":"        self._test_floatingip_with_invalid_create_port(MIDONET_PLUGIN_NAME)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_external_network_port_creation(self):"},{"line_number":86,"context_line":"        with self.subnet(cidr\u003d\u0027200.200.200.0/24\u0027) as pub_sub:"},{"line_number":87,"context_line":"            self._set_net_external(pub_sub[\u0027subnet\u0027][\u0027network_id\u0027])"},{"line_number":88,"context_line":"            ip_addr \u003d \"200.200.200.200\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BU04%3D","line":85,"updated":"2013-11-27 11:28:03.000000000","message":"Looks like this verifies that route is added on port create. How about on port delete? Can/should we check route deleted?","commit_id":"503395e29a59572762122dd84feadf910a9da6db"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"ac8904c6678c94ddbba5c36b8fbf938c5e1de109","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import neutron.tests.unit.test_db_plugin as test_plugin"},{"line_number":32,"context_line":"import neutron.tests.unit.test_extension_security_group as sg"},{"line_number":33,"context_line":"import neutron.tests.unit.test_l3_plugin as test_l3_plugin"},{"line_number":34,"context_line":"import webob.exc"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"MIDOKURA_PKG_PATH \u003d \"neutron.plugins.midonet.plugin\""},{"line_number":37,"context_line":"MIDONET_PLUGIN_NAME \u003d (\u0027%s.MidonetPluginV2\u0027 % MIDOKURA_PKG_PATH)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FuSc%3D","line":34,"updated":"2014-01-09 07:07:19.000000000","message":"this import should be before neutron imports according to http://docs.openstack.org/developer/hacking/","commit_id":"d5044f58fdade6f2ad9a49b9ff299998e883a7ee"}]}
