)]}'
{"quantum/db/l3_db.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5238e3f0f56bf690d4cc60aba48bcd183110ec34","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                route_qry.filter_by(router_id\u003did).one()"},{"line_number":234,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":235,"context_line":"            except exc.NoResultFound:"},{"line_number":236,"context_line":"                pass"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":239,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F2MA%3D","line":236,"updated":"2012-11-20 11:00:39.000000000","message":"what if we have more than one floating ip associated with this router?","commit_id":"347fea7fd2dc7f8750d3852d3b5e9378a71ebc42"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":233,"context_line":"                route_qry.filter_by(router_id\u003did).one()"},{"line_number":234,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":235,"context_line":"            except exc.NoResultFound:"},{"line_number":236,"context_line":"                pass"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":239,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F2J0%3D","line":236,"in_reply_to":"AAAAMH%2F%2F2MA%3D","updated":"2012-11-20 11:39:10.000000000","message":"Done","commit_id":"347fea7fd2dc7f8750d3852d3b5e9378a71ebc42"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5238e3f0f56bf690d4cc60aba48bcd183110ec34","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":237,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"},{"line_number":238,"context_line":"            ports \u003d self.get_ports(context, filters\u003ddevice_filter)"},{"line_number":239,"context_line":"            if ports:"},{"line_number":240,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2F2Fg%3D","line":238,"updated":"2012-11-20 13:24:56.000000000","message":"can u modify this accordingly?","commit_id":"0497694d8666a85a7dbe8c4d4a2039d178989c4c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":237,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"},{"line_number":238,"context_line":"            ports \u003d self.get_ports(context, filters\u003ddevice_filter)"},{"line_number":239,"context_line":"            if ports:"},{"line_number":240,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2F2FY%3D","line":238,"in_reply_to":"AAAAMH%2F%2F2Fg%3D","updated":"2012-11-20 13:30:55.000000000","message":"Done\n\nNow using self.get_ports_count","commit_id":"0497694d8666a85a7dbe8c4d4a2039d178989c4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c2eaceccce78426185c1304fa55eab5c22285b1","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            router \u003d self._get_router(context, id)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"            # Ensure that the router is not used"},{"line_number":231,"context_line":"            fips \u003d self.get_floatingips_count(context,"},{"line_number":232,"context_line":"                                              filters\u003d{\u0027router_id\u0027: [id]})"},{"line_number":233,"context_line":"            if fips:"},{"line_number":234,"context_line":"                raise l3.RouterInUse(router_id\u003did)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMH%2F%2F198%3D","line":231,"updated":"2012-11-20 14:54:50.000000000","message":"This only count the floatingips number of current user. If there are floatingips belong to other user, this won\u0027t get that. We should elevated this context. Thanks Alex","commit_id":"8c70a3f7645ec339cbbddf71d3b44ef6a09340dd"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":228,"context_line":"            router \u003d self._get_router(context, id)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"            # Ensure that the router is not used"},{"line_number":231,"context_line":"            fips \u003d self.get_floatingips_count(context,"},{"line_number":232,"context_line":"                                              filters\u003d{\u0027router_id\u0027: [id]})"},{"line_number":233,"context_line":"            if fips:"},{"line_number":234,"context_line":"                raise l3.RouterInUse(router_id\u003did)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMH%2F%2F16U%3D","line":231,"in_reply_to":"AAAAMH%2F%2F198%3D","updated":"2012-11-20 15:30:01.000000000","message":"Good catch","commit_id":"8c70a3f7645ec339cbbddf71d3b44ef6a09340dd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c2eaceccce78426185c1304fa55eab5c22285b1","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":237,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"},{"line_number":238,"context_line":"            ports \u003d self.get_ports_count(context, filters\u003ddevice_filter)"},{"line_number":239,"context_line":"            if ports:"},{"line_number":240,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMH%2F%2F190%3D","line":238,"updated":"2012-11-20 14:54:50.000000000","message":"same above","commit_id":"8c70a3f7645ec339cbbddf71d3b44ef6a09340dd"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"            # Ensure that the router is not used"},{"line_number":231,"context_line":"            fips \u003d self.get_floatingips_count(context.elevated(),"},{"line_number":232,"context_line":"                                              filters\u003d{\u0027router_id\u0027: [id]})"},{"line_number":233,"context_line":"            if fips:"},{"line_number":234,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMH%2F%2F1pY%3D","line":232,"updated":"2012-11-20 18:01:38.000000000","message":"I thought I saw someone file a different bug that it was possible to delete a router interface that was required for the path between a floating-ip + an internal port. I can\u0027t find that bug anymore, but I think its still a valid concern.  Once we fix that, it should be impossible for a router to have bound floating IPs while not having any router_interfaces, so the above check would not be necessary.  It doesn\u0027t do much harm though, so I\u0027m ok keeping it here, and we can try to remove it when we add that check.","commit_id":"0e75f4396595b9c79275dcbbc06d26d8ba97cbb8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":236,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":237,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"},{"line_number":238,"context_line":"            ports \u003d self.get_ports_count(context.elevated(),"},{"line_number":239,"context_line":"                                         filters\u003ddevice_filter)"},{"line_number":240,"context_line":"            if ports:"},{"line_number":241,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMH%2F%2F1w0%3D","line":239,"updated":"2012-11-20 18:01:38.000000000","message":"nice trick using the count :) \n\nI might change the values to be fips_count and port_count just to be a bit more clear, especially since the same variable \"ports\" is used below to actually represent a list of ports.","commit_id":"0e75f4396595b9c79275dcbbc06d26d8ba97cbb8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":236,"context_line":"            device_filter \u003d {\u0027device_id\u0027: [id],"},{"line_number":237,"context_line":"                             \u0027device_owner\u0027: [DEVICE_OWNER_ROUTER_INTF]}"},{"line_number":238,"context_line":"            ports \u003d self.get_ports_count(context.elevated(),"},{"line_number":239,"context_line":"                                         filters\u003ddevice_filter)"},{"line_number":240,"context_line":"            if ports:"},{"line_number":241,"context_line":"                raise l3.RouterInUse(router_id\u003did)"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMH%2F%2F1oA%3D","line":239,"in_reply_to":"AAAAMH%2F%2F1w0%3D","updated":"2012-11-20 18:31:06.000000000","message":"It was Yongs suggestion :)","commit_id":"0e75f4396595b9c79275dcbbc06d26d8ba97cbb8"}],"quantum/tests/unit/test_l3_plugin.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    public_sub[\u0027subnet\u0027][\u0027network_id\u0027])"},{"line_number":927,"context_line":"                self._router_interface_action(\u0027remove\u0027, r[\u0027router\u0027][\u0027id\u0027],"},{"line_number":928,"context_line":"                                              private_sub[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":929,"context_line":"                                              None)"},{"line_number":930,"context_line":"                self._delete(\u0027routers\u0027, r[\u0027router\u0027][\u0027id\u0027],"},{"line_number":931,"context_line":"                             expected_code\u003dexc.HTTPConflict.code)"},{"line_number":932,"context_line":"                # Cleanup"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMH%2F%2F1pM%3D","line":929,"updated":"2012-11-20 18:01:38.000000000","message":"this will actually be prohibited by the updated check on the previous page, so it may be better to just remove this line, and I will add a similar test for the invalid removal of an interface required for a floating IP.","commit_id":"0e75f4396595b9c79275dcbbc06d26d8ba97cbb8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    public_sub[\u0027subnet\u0027][\u0027network_id\u0027])"},{"line_number":927,"context_line":"                self._router_interface_action(\u0027remove\u0027, r[\u0027router\u0027][\u0027id\u0027],"},{"line_number":928,"context_line":"                                              private_sub[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":929,"context_line":"                                              None)"},{"line_number":930,"context_line":"                self._delete(\u0027routers\u0027, r[\u0027router\u0027][\u0027id\u0027],"},{"line_number":931,"context_line":"                             expected_code\u003dexc.HTTPConflict.code)"},{"line_number":932,"context_line":"                # Cleanup"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMH%2F%2F1nw%3D","line":929,"in_reply_to":"AAAAMH%2F%2F1pM%3D","updated":"2012-11-20 18:31:06.000000000","message":"Done\n\nI moved this below as it is required for cleaning up","commit_id":"0e75f4396595b9c79275dcbbc06d26d8ba97cbb8"}]}
