)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"eab131fd23095c3ea53a4698264045db02a29908","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not allow delete subnet gateway port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is no check about delete gateway port. User can delete it through"},{"line_number":10,"context_line":"API directly."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"So this patch add the check like ml2."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da6ed579_be5ca87d","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":42},"updated":"2016-01-15 00:49:02.000000000","message":"you  send notify in this patch \nWhere is the code that handle the gateway port check?\n\nI think in neutron it is not in the l3 service plugin.\nAnd we do not load it \n\nplease check that it loaded or add explicit check for the gateway attribute","commit_id":"65215fd1ad6c1e327e5d5877bf731cba7c67e29e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"d87daeffb3230a03607a606c511a4c7b7feb64d4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not allow delete subnet gateway port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is no check about delete gateway port. User can delete it through"},{"line_number":10,"context_line":"API directly."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"So this patch add the check like ml2."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da6ed579_430b4c24","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":42},"in_reply_to":"da6ed579_be5ca87d","updated":"2016-01-15 05:26:44.000000000","message":"Thanks, Eran, Yeah , you said is right. In my env, it could be done with l3 loaded. I will update this patch and complete the funcs.","commit_id":"65215fd1ad6c1e327e5d5877bf731cba7c67e29e"}],"dragonflow/tests/fullstack/test_neutron_api.py":[{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"5676cc13f8e2b4cb307f3a0cf0628d71daf60f9d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def test_delete_router_interface_port(self):"},{"line_number":103,"context_line":"        router \u003d objects.RouterTestWrapper(self.neutron, self.nb_api)"},{"line_number":104,"context_line":"        network \u003d objects.NetworkTestWrapper(self.neutron, self.nb_api)"},{"line_number":105,"context_line":"        network_id \u003d network.create(network\u003d{\u0027name\u0027: \u0027test_net\u0027,"},{"line_number":106,"context_line":"                                             \u0027admin_state_up\u0027: True"},{"line_number":107,"context_line":"                                             })"},{"line_number":108,"context_line":"        self.assertTrue(network.exists())"},{"line_number":109,"context_line":"        subnet \u003d {\u0027subnets\u0027: [{\u0027cidr\u0027: \u002791.126.188.0/24\u0027,"},{"line_number":110,"context_line":"                  \u0027ip_version\u0027: 4, \u0027network_id\u0027: network_id}]}"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_19f9e94d","line":107,"range":{"start_line":105,"start_character":36,"end_line":107,"end_character":46},"updated":"2016-01-18 07:10:27.000000000","message":"There is no need in this case to pass custom network dict. It corresponds to the default one.\n\nIn NetworkTestWrapper object:\n    def create(self, network\u003d{\u0027name\u0027: \u0027mynetwork1\u0027, \u0027admin_state_up\u0027: True}):","commit_id":"c7b50108755cf71206fbefacbb5a981f0cd8fc44"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"79b3a464723dd7efc7a27c77a674f7947f27027e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def test_delete_router_interface_port(self):"},{"line_number":103,"context_line":"        router \u003d objects.RouterTestWrapper(self.neutron, self.nb_api)"},{"line_number":104,"context_line":"        network \u003d objects.NetworkTestWrapper(self.neutron, self.nb_api)"},{"line_number":105,"context_line":"        network_id \u003d network.create(network\u003d{\u0027name\u0027: \u0027test_net\u0027,"},{"line_number":106,"context_line":"                                             \u0027admin_state_up\u0027: True"},{"line_number":107,"context_line":"                                             })"},{"line_number":108,"context_line":"        self.assertTrue(network.exists())"},{"line_number":109,"context_line":"        subnet \u003d {\u0027subnets\u0027: [{\u0027cidr\u0027: \u002791.126.188.0/24\u0027,"},{"line_number":110,"context_line":"                  \u0027ip_version\u0027: 4, \u0027network_id\u0027: network_id}]}"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_d967d123","line":107,"range":{"start_line":105,"start_character":36,"end_line":107,"end_character":46},"in_reply_to":"da6ed579_19f9e94d","updated":"2016-01-18 07:12:45.000000000","message":"Thanks, I will remove it.","commit_id":"c7b50108755cf71206fbefacbb5a981f0cd8fc44"}],"dragonflow/tests/fullstack/test_objects.py":[{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"b32fcd9c3636d5a80d54d8ebac1f81adab01fc3e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        ports \u003d ports[\u0027ports\u0027]"},{"line_number":35,"context_line":"        for port in ports:"},{"line_number":36,"context_line":"            if port[\u0027device_owner\u0027] \u003d\u003d \u0027network:router_interface\u0027:"},{"line_number":37,"context_line":"                continue"},{"line_number":38,"context_line":"            self.neutron.delete_port(port[\u0027id\u0027])"},{"line_number":39,"context_line":"        self.neutron.delete_router(self.router_id)"},{"line_number":40,"context_line":"        self.deleted \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_fe6de532","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":24},"updated":"2016-01-19 09:30:40.000000000","message":"delete() function is used as a cleanup in destructor.\nYou better delete port gracefully here.\nSomething like this:\n\n        for port in ports:\n            if port[\u0027device_owner\u0027] \u003d\u003d \u0027network:router_interface\u0027:\n                for fip in port[\u0027fixed_ips\u0027]:\n                    subnet_msg \u003d {\u0027subnet_id\u0027: fip[\u0027subnet_id\u0027]}\n                    self.neutron.remove_interface_router(\n                         self.router_id, body\u003dsubnet_msg)\n            else:\n                self.neutron.delete_port(port[\u0027id\u0027])\n\n\nBtw, this fix closes this bug:\nhttps://bugs.launchpad.net/dragonflow/+bug/1533237","commit_id":"66ee0606be445469efb9c637629cc12c66b52819"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"ea9eba77a24fe69b144d6b80dbf8f3d392c12939","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        ports \u003d ports[\u0027ports\u0027]"},{"line_number":35,"context_line":"        for port in ports:"},{"line_number":36,"context_line":"            if port[\u0027device_owner\u0027] \u003d\u003d \u0027network:router_interface\u0027:"},{"line_number":37,"context_line":"                continue"},{"line_number":38,"context_line":"            self.neutron.delete_port(port[\u0027id\u0027])"},{"line_number":39,"context_line":"        self.neutron.delete_router(self.router_id)"},{"line_number":40,"context_line":"        self.deleted \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_f9ce5f82","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":24},"in_reply_to":"ba63e191_fe6de532","updated":"2016-01-19 09:42:36.000000000","message":"Thanks for suggesiton. I will update it.","commit_id":"66ee0606be445469efb9c637629cc12c66b52819"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"32636a68041f357635e1dc4afc7d900c712f13c0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    subnet_msg \u003d {\u0027subnet_id\u0027: fip[\u0027subnet_id\u0027]}"},{"line_number":39,"context_line":"                    self.neutron.remove_interface_router("},{"line_number":40,"context_line":"                         self.router_id, body\u003dsubnet_msg)"},{"line_number":41,"context_line":"            self.neutron.delete_port(port[\u0027id\u0027])"},{"line_number":42,"context_line":"        self.neutron.delete_router(self.router_id)"},{"line_number":43,"context_line":"        self.deleted \u003d True"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba63e191_7f9a4c16","line":41,"updated":"2016-01-19 11:13:20.000000000","message":"i think that Neutron also delete the port when you call \"remove_interface_router\", so you need an \"else\" here\nbefore the self.neutron.delete_port()\n\n(At least thats what seems to be the reason that the test fails)","commit_id":"8db0f1057fe950dae284cc3e35a06712621e5f11"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2d9787ea33214db24b4a4643f556a67257abae26","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    subnet_msg \u003d {\u0027subnet_id\u0027: fip[\u0027subnet_id\u0027]}"},{"line_number":39,"context_line":"                    self.neutron.remove_interface_router("},{"line_number":40,"context_line":"                         self.router_id, body\u003dsubnet_msg)"},{"line_number":41,"context_line":"            self.neutron.delete_port(port[\u0027id\u0027])"},{"line_number":42,"context_line":"        self.neutron.delete_router(self.router_id)"},{"line_number":43,"context_line":"        self.deleted \u003d True"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba63e191_95c4bf40","line":41,"in_reply_to":"ba63e191_7f9a4c16","updated":"2016-01-19 11:40:50.000000000","message":"OH, thanks, I miss it. Sorry.","commit_id":"8db0f1057fe950dae284cc3e35a06712621e5f11"}]}
