)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"df9594cd5fae5f7a05c2a378110e07d4516bd359","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use admin context when updating router gateway"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a router gateway is updated and the subnet changes,"},{"line_number":10,"context_line":"we need to use the admin context in order for the operation"},{"line_number":11,"context_line":"to succeed.  Since the target network has already been"},{"line_number":12,"context_line":"verified to be external, this is OK. The other operations"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7faddb67_22f090fd","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":56},"updated":"2019-08-27 16:58:57.000000000","message":"IMO, this should be discussed, if user change the subnet to the service type which is not correct. For instance, change the subnet to the type of \"network:floatingip_agent_gateway\". Or change the subnet to which the in-use floating IPs can not work. Floating IP traffic may be down. This can indeed expand the neutron burden. One more thing, by default, ordinary user have no right to see the subnet type of the external network:\n\n\n$ openstack network list\n+--------------------------------------+---------+--------------------------------------+\n| ID                                   | Name    | Subnets                              |\n+--------------------------------------+---------+--------------------------------------+\n| 18497185-f26d-4c1c-bf40-089b8941bea7 | public  | c0ddd56f-c344-4941-82c7-6ed26c4e7786 |\n| 6b6519bf-9c96-4111-8a0b-a52e11c2ec1c | public2 |                                      |\n+--------------------------------------+---------+--------------------------------------+\n$ openstack subnet show c0ddd56f-c344-4941-82c7-6ed26c4e7786\nNo Subnet found for c0ddd56f-c344-4941-82c7-6ed26c4e7786","commit_id":"53c9c08a0d45ef6cbf23ccde5229d566e4e21d5c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"437c00c297472aeb8db1d07f5aa1af2a7eef313d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use admin context when updating router gateway"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a router gateway is updated and the subnet changes,"},{"line_number":10,"context_line":"we need to use the admin context in order for the operation"},{"line_number":11,"context_line":"to succeed.  Since the target network has already been"},{"line_number":12,"context_line":"verified to be external, this is OK. The other operations"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7faddb67_904c2ec9","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":56},"in_reply_to":"7faddb67_22f090fd","updated":"2019-08-27 19:03:32.000000000","message":"I can move the external interface of my router between subnets on the same network and still ping the floating IP, assuming I have a route to that subnet, as they are on the same network.  The only thing that might be different is you can\u0027t clear the router gateway now if a floating IP is attached (i.e. clearing the network), then set a new one, but you can change the subnet if you\u0027re the admin user, there isn\u0027t a validation method preventing this.\n\nAnd regarding subnet service types, trying to change to an invalid service type does raise an error:\n\n$ openstack router set --external-gateway public --fixed-ip subnet\u003dd7272f79-7613-4ee8-9242-614fbd2d3261 router1\nBadRequestException: 400: Client Error for url: http://10.18.57.7:9696/v2.0/routers/9e89ed85-261c-4482-95a6-88079f936a5f, Invalid input for operation: Failed to create port on network bda8f2c2-900b-4cb1-b259-fa891eab48b7, because fixed_ips included invalid subnet d7272f79-7613-4ee8-9242-614fbd2d3261.","commit_id":"53c9c08a0d45ef6cbf23ccde5229d566e4e21d5c"}],"neutron/tests/fullstack/resources/client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"faf0ef614d0e8e7194cba9b52d9934716ba4f16e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            spec[\u0027external_gateway_info\u0027] \u003d {\"network_id\": external_network}"},{"line_number":73,"context_line":"            if external_subnet:"},{"line_number":74,"context_line":"                spec[\u0027external_gateway_info\u0027][\u0027external_fixed_ips\u0027] \u003d ("},{"line_number":75,"context_line":"                    {\"subnet_id\": external_subnet})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_2c055046","line":75,"range":{"start_line":75,"start_character":20,"end_line":75,"end_character":51},"updated":"2019-08-06 08:16:36.000000000","message":"\u0027external_fixed_ips\u0027 must be a list [1][2]\n\nspec[\u0027external_gateway_info\u0027][\u0027external_fixed_ips\u0027] \u003d [{\u0027subnet_id\u0027: external_subnet}]\n\n[1] https://github.com/openstack/neutron-lib/blob/7da7c3e1c0ee2b689e87159ba56184ce9495549d/neutron_lib/api/validators/__init__.py#L526\n[2] https://logs.opendev.org/77/670177/5/check/neutron-fullstack/d02df45/testr_results.html.gz","commit_id":"d0f24f258e3a3d20b41f73d9e8f59ebea9629537"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4149b29f151cc69885b9f500226908daf7fef4ba","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            spec[\u0027external_gateway_info\u0027] \u003d {\"network_id\": external_network}"},{"line_number":73,"context_line":"            if external_subnet:"},{"line_number":74,"context_line":"                spec[\u0027external_gateway_info\u0027][\u0027external_fixed_ips\u0027] \u003d ("},{"line_number":75,"context_line":"                    {\"subnet_id\": external_subnet})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_4d5af8f1","line":75,"range":{"start_line":75,"start_character":20,"end_line":75,"end_character":51},"in_reply_to":"7faddb67_2c055046","updated":"2019-08-06 21:06:24.000000000","message":"Done","commit_id":"d0f24f258e3a3d20b41f73d9e8f59ebea9629537"}],"neutron/tests/fullstack/test_l3_agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"faf0ef614d0e8e7194cba9b52d9934716ba4f16e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        external_vm.block_until_no_ping(old_gw_ip)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # create second external subnet and external vm on it"},{"line_number":123,"context_line":"        ext_sub_2 \u003d self._create_external_subnet(tenant_id, ext_net[\u0027id\u0027])"},{"line_number":124,"context_line":"        external_vm_2 \u003d self._create_external_vm(ext_net, ext_sub_2)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        router_2 \u003d self.safe_client.create_router(tenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_ac2ce001","line":123,"range":{"start_line":123,"start_character":49,"end_line":123,"end_character":58},"updated":"2019-08-06 08:16:36.000000000","message":"Just a question: if the tenand_id (project_id) is the same, how are we testing that we are actually calling the elevated context here [1]? Shouldn\u0027t we use another tenant_id?\n\n[1] https://review.opendev.org/#/c/670177/5/neutron/db/l3_db.py@498","commit_id":"d0f24f258e3a3d20b41f73d9e8f59ebea9629537"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4149b29f151cc69885b9f500226908daf7fef4ba","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        external_vm.block_until_no_ping(old_gw_ip)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # create second external subnet and external vm on it"},{"line_number":123,"context_line":"        ext_sub_2 \u003d self._create_external_subnet(tenant_id, ext_net[\u0027id\u0027])"},{"line_number":124,"context_line":"        external_vm_2 \u003d self._create_external_vm(ext_net, ext_sub_2)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        router_2 \u003d self.safe_client.create_router(tenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_2d253c5c","line":123,"range":{"start_line":123,"start_character":49,"end_line":123,"end_character":58},"in_reply_to":"7faddb67_ac2ce001","updated":"2019-08-06 21:06:24.000000000","message":"I guess in reality, these external objects would have been created by the admin, I suppose using that context would be best?","commit_id":"d0f24f258e3a3d20b41f73d9e8f59ebea9629537"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c0fb417b4c37fc4867f39317b5864d668cc78702","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        external_vm_2 \u003d self._create_external_vm(ext_net, ext_sub_2)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        router_2 \u003d self.safe_client.create_router(tenant_id,"},{"line_number":128,"context_line":"            external_network\u003dext_net[\u0027id\u0027], external_subnet\u003dext_sub_2[\u0027id\u0027])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        vm_2 \u003d self._create_net_subnet_and_vm("},{"line_number":131,"context_line":"            tenant_id, [\u002720.0.1.0/24\u0027, \u00272001:db8:aaab::/64\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_9199341f","line":128,"range":{"start_line":128,"start_character":44,"end_line":128,"end_character":76},"updated":"2019-09-03 14:24:56.000000000","message":"I\u0027m not sure but it seems for me that this creates port which should be later deleted manually before cleanup will try to delete subnet as now it causes failure of fullstack tests: https://019ab552bc17f89947ce-f1e24edd0ae51a8de312c1bf83189630.ssl.cf2.rackcdn.com/670177/7/check/neutron-fullstack/fc0c9cd/testr_results.html.gz","commit_id":"53c9c08a0d45ef6cbf23ccde5229d566e4e21d5c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3d055d266cac0d8268a86acfeb13782bb0ee7fd0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        external_vm_2 \u003d self._create_external_vm(ext_net, ext_sub_2)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        router_2 \u003d self.safe_client.create_router(tenant_id,"},{"line_number":128,"context_line":"            external_network\u003dext_net[\u0027id\u0027], external_subnet\u003dext_sub_2[\u0027id\u0027])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        vm_2 \u003d self._create_net_subnet_and_vm("},{"line_number":131,"context_line":"            tenant_id, [\u002720.0.1.0/24\u0027, \u00272001:db8:aaab::/64\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_024ad0ab","line":128,"range":{"start_line":128,"start_character":44,"end_line":128,"end_character":76},"in_reply_to":"7faddb67_9199341f","updated":"2019-09-03 16:11:52.000000000","message":"Yes, it\u0027s definitely the subnet created at L124 that is the problem, I would have thought cleanup would do the correct thing here but there is an extra port :(\n\nLooking at this now after my hacking, I can\u0027t remember why I even create this router and vm_2, it almost looks like it was just to make sure external_vm_2 was alive, don\u0027t think we need to do that.\n\nAlso, one thing Liu mentioned in the L3 meeting was that I\u0027m updating the port and not updating the router, so the call below isn\u0027t exactly correct.  So I have a little work to do...","commit_id":"53c9c08a0d45ef6cbf23ccde5229d566e4e21d5c"}]}
