)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ba98158e624ce69ebb87950cee51564bebb7d4ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3a673cd5_b6cb9116","updated":"2022-04-22 07:05:29.000000000","message":"Thanks, please check the nits I found, the rendering looks ok (https://340bd2476776cdcc0b0e-9816e50b961196213d5638e985d3f02c.ssl.cf5.rackcdn.com/810822/4/check/openstack-tox-docs/d912c48/docs/specs/zed/network-cascade-deletion.html  )","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1aa3db21d60d963744be33e19387ec3951fce3ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"691a9e6c_9988dfc0","updated":"2022-04-22 08:13:43.000000000","message":"Nice start. Added one topic of discussion about sync/async API.","commit_id":"c48118b782f1592facaae368a6b6a7486f4239fa"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fe18d81db1c9962d18781e5a0e0a9ffd8cc1018d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"82ae8436_572ef769","updated":"2022-07-20 09:18:28.000000000","message":"-1 just for visibility ","commit_id":"93788a0be9a27c7d2093d6f9db2d38f46831af78"}],"specs/zed/network-cascade-deletion.rst":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ba98158e624ce69ebb87950cee51564bebb7d4ac","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The goal of this spec is to add a new API to allow for the cascade"},{"line_number":50,"context_line":"deletion of a given network and all the resources that belong to that"},{"line_number":51,"context_line":"it, similarly to Octavia\u0027s ``loadbalancer delete --cascade`` option [2]_."},{"line_number":52,"context_line":"When the proposed network cascade deletion API call is sent to the"},{"line_number":53,"context_line":"Neutron server, it is expected to find and clean:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"43eed0df_09e2849a","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":2},"updated":"2022-04-22 07:05:29.000000000","message":"nit: please remove","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The goal of this spec is to add a new API to allow for the cascade"},{"line_number":50,"context_line":"deletion of a given network and all the resources that belong to that"},{"line_number":51,"context_line":"it, similarly to Octavia\u0027s ``loadbalancer delete --cascade`` option [2]_."},{"line_number":52,"context_line":"When the proposed network cascade deletion API call is sent to the"},{"line_number":53,"context_line":"Neutron server, it is expected to find and clean:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9c50427c_ea12479f","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":2},"in_reply_to":"43eed0df_09e2849a","updated":"2022-04-27 14:32:44.000000000","message":"Done","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ba98158e624ce69ebb87950cee51564bebb7d4ac","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Neutron server, it is expected to find and clean:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* All router interfaces that belong to the subnets in that network,"},{"line_number":56,"context_line":"* All trunk ports whose parent ports are in that network- it will also"},{"line_number":57,"context_line":"  need to find and delete all the subports in these trunks,"},{"line_number":58,"context_line":"* Remove all ports in that network; ports owned by ``DEVICE_OWNER_DHCP``,"},{"line_number":59,"context_line":"  ``DEVICE_OWNER_DISTRIBUTED`` or ``DEVICE_OWNER_AGENT_GW`` can be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9bc6c48e_463b2fba","line":56,"range":{"start_line":56,"start_character":56,"end_line":56,"end_character":57},"updated":"2022-04-22 07:05:29.000000000","message":"nit: please remove it","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Neutron server, it is expected to find and clean:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* All router interfaces that belong to the subnets in that network,"},{"line_number":56,"context_line":"* All trunk ports whose parent ports are in that network- it will also"},{"line_number":57,"context_line":"  need to find and delete all the subports in these trunks,"},{"line_number":58,"context_line":"* Remove all ports in that network; ports owned by ``DEVICE_OWNER_DHCP``,"},{"line_number":59,"context_line":"  ``DEVICE_OWNER_DISTRIBUTED`` or ``DEVICE_OWNER_AGENT_GW`` can be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0fd3eacf_331a1b46","line":56,"range":{"start_line":56,"start_character":56,"end_line":56,"end_character":57},"in_reply_to":"9bc6c48e_463b2fba","updated":"2022-04-27 14:32:44.000000000","message":"Done","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"aa0477700111ffa3b23ee3ee356027bf0e0ccf73","unresolved":true,"context_lines":[{"line_number":55,"context_line":"* All router interfaces that belong to the subnets in that network,"},{"line_number":56,"context_line":"* All trunk ports whose parent ports are in that network- it will also"},{"line_number":57,"context_line":"  need to find and delete all the subports in these trunks,"},{"line_number":58,"context_line":"* Remove all ports in that network; ports owned by ``DEVICE_OWNER_DHCP``,"},{"line_number":59,"context_line":"  ``DEVICE_OWNER_DISTRIBUTED`` or ``DEVICE_OWNER_AGENT_GW`` can be"},{"line_number":60,"context_line":"  omitted as they will have been already automatically removed."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1e0e2587_058083ff","line":58,"range":{"start_line":58,"start_character":2,"end_line":58,"end_character":34},"updated":"2022-04-22 07:53:30.000000000","message":"What about ports owned by nova compute (both up and down VMs)? Please describe this case","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b71b64b93f3305fdbe0402858e0fe6c9a59f2261","unresolved":true,"context_lines":[{"line_number":55,"context_line":"* All router interfaces that belong to the subnets in that network,"},{"line_number":56,"context_line":"* All trunk ports whose parent ports are in that network- it will also"},{"line_number":57,"context_line":"  need to find and delete all the subports in these trunks,"},{"line_number":58,"context_line":"* Remove all ports in that network; ports owned by ``DEVICE_OWNER_DHCP``,"},{"line_number":59,"context_line":"  ``DEVICE_OWNER_DISTRIBUTED`` or ``DEVICE_OWNER_AGENT_GW`` can be"},{"line_number":60,"context_line":"  omitted as they will have been already automatically removed."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e8c8eb1c_9177b6af","line":58,"range":{"start_line":58,"start_character":2,"end_line":58,"end_character":34},"in_reply_to":"1e0e2587_058083ff","updated":"2022-04-26 12:26:05.000000000","message":"+1","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":true,"context_lines":[{"line_number":55,"context_line":"* All router interfaces that belong to the subnets in that network,"},{"line_number":56,"context_line":"* All trunk ports whose parent ports are in that network- it will also"},{"line_number":57,"context_line":"  need to find and delete all the subports in these trunks,"},{"line_number":58,"context_line":"* Remove all ports in that network; ports owned by ``DEVICE_OWNER_DHCP``,"},{"line_number":59,"context_line":"  ``DEVICE_OWNER_DISTRIBUTED`` or ``DEVICE_OWNER_AGENT_GW`` can be"},{"line_number":60,"context_line":"  omitted as they will have been already automatically removed."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5e8ab063_7b7bd0d2","line":58,"range":{"start_line":58,"start_character":2,"end_line":58,"end_character":34},"in_reply_to":"e8c8eb1c_9177b6af","updated":"2022-04-27 14:32:44.000000000","message":"The \"Remove all ports in that network\" covers that. All such ports will be deleted. Today You also can delete port which is attached to VM directly using Neutron API if I\u0027m not mistaken.","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1aa3db21d60d963744be33e19387ec3951fce3ba","unresolved":true,"context_lines":[{"line_number":120,"context_line":"  return ``HTTP 409 Conflict`` with detailed information about what"},{"line_number":121,"context_line":"  went wrong, e.g. \"Port \u003cport_id\u003e could not be deleted. Reason: \u003cmessage\u003e\"."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* Make this Neutron API asynchronous. In this case, the return code would"},{"line_number":124,"context_line":"  only tell if the cascade delete request was accepted and will be"},{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ea3c16e0_498fb154","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":37},"updated":"2022-04-22 08:13:43.000000000","message":"I would recommend exploring this option. Once (for an experimental trunk related downstream feature) we did something similar as the sync cascade option here and the results were not good. Many neutron API operations today take easily 0.5-1.0 seconds (or even more) to complete. Unless we implement a really efficient bulk delete (which is hard) it does not take many resources (which are to be deleted because of cascading) to start hitting 30-60-100 second http client timeouts. When that happens the client knows nothing about what happened.","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":true,"context_lines":[{"line_number":120,"context_line":"  return ``HTTP 409 Conflict`` with detailed information about what"},{"line_number":121,"context_line":"  went wrong, e.g. \"Port \u003cport_id\u003e could not be deleted. Reason: \u003cmessage\u003e\"."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* Make this Neutron API asynchronous. In this case, the return code would"},{"line_number":124,"context_line":"  only tell if the cascade delete request was accepted and will be"},{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3e2bc341_acf22f61","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":37},"in_reply_to":"710a2fcd_c94bed2a","updated":"2022-04-27 14:32:44.000000000","message":"My main problem with this is that it would break promise from https://docs.openstack.org/api-ref/network/v2/#synchronous-versus-asynchronous-plug-in-behavior about \"an API client is guaranteed that all subsequent API calls properly reflect the changed logical model.\"","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b71b64b93f3305fdbe0402858e0fe6c9a59f2261","unresolved":true,"context_lines":[{"line_number":120,"context_line":"  return ``HTTP 409 Conflict`` with detailed information about what"},{"line_number":121,"context_line":"  went wrong, e.g. \"Port \u003cport_id\u003e could not be deleted. Reason: \u003cmessage\u003e\"."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* Make this Neutron API asynchronous. In this case, the return code would"},{"line_number":124,"context_line":"  only tell if the cascade delete request was accepted and will be"},{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."}],"source_content_type":"text/x-rst","patch_set":4,"id":"710a2fcd_c94bed2a","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":37},"in_reply_to":"ea3c16e0_498fb154","updated":"2022-04-26 12:26:05.000000000","message":"+1","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1aa3db21d60d963744be33e19387ec3951fce3ba","unresolved":true,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* Make this Neutron API asynchronous. In this case, the return code would"},{"line_number":124,"context_line":"  only tell if the cascade delete request was accepted and will be"},{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."},{"line_number":127,"context_line":"  This is how Octavia implemented the cascade deletion of the"},{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dc1884bb_af472ffd","line":126,"range":{"start_line":125,"start_character":35,"end_line":126,"end_character":66},"updated":"2022-04-22 08:13:43.000000000","message":"Not necessarily. The user is generally not interested in when a deletion actually happens as long as it does not fail. A deletion can be a relatively slow operation without annoying the user. Also letting the server to perform it at a pace it sees fit.\n\nFor example I can imagine a two phased operation:\n\n1) a quick check if any constraints present in the db would prevent the cascaded delete, reject the delete request synchronously and quickly in the first response, if yes\n2) go on with the actual deletion asynchronously, what the user can poll, but I guess many clients would just skip","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":true,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* Make this Neutron API asynchronous. In this case, the return code would"},{"line_number":124,"context_line":"  only tell if the cascade delete request was accepted and will be"},{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."},{"line_number":127,"context_line":"  This is how Octavia implemented the cascade deletion of the"},{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"6bb7b9b2_e3b752f0","line":126,"range":{"start_line":125,"start_character":35,"end_line":126,"end_character":66},"in_reply_to":"dc1884bb_af472ffd","updated":"2022-04-27 14:32:44.000000000","message":"I rephrased it a bit","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1aa3db21d60d963744be33e19387ec3951fce3ba","unresolved":true,"context_lines":[{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."},{"line_number":127,"context_line":"  This is how Octavia implemented the cascade deletion of the"},{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"a4bf1748_e459b95e","line":129,"range":{"start_line":128,"start_character":21,"end_line":129,"end_character":21},"updated":"2022-04-22 08:13:43.000000000","message":"Yeah we would break the letter of the docs - which we can easily change. But I don\u0027t think this would be breaking the spirit of it.\n\nThat part in the docs is about the RESTful object model. Doing a cascaded delete under \u0027DELETE /v2.0/networks?cascade\u003dtrue\u0027 is significantly different from all pre-existing operations in the API. From REST perspective this is kind of a lie, since the operation is not only on the resource present in the request. We can easily live with this white lie, but still the cascaded delete is orchestration functionality, which *cannot be* transactional, and I believe it is not worth faking a transactional-looking sync facade in front of it.","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b71b64b93f3305fdbe0402858e0fe6c9a59f2261","unresolved":true,"context_lines":[{"line_number":125,"context_line":"  processed by the server, or not. Later, the user would need to"},{"line_number":126,"context_line":"  periodically check if the network is already deleted or not yet."},{"line_number":127,"context_line":"  This is how Octavia implemented the cascade deletion of the"},{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"cdb677ea_c7324359","line":129,"range":{"start_line":128,"start_character":21,"end_line":129,"end_character":21},"in_reply_to":"a4bf1748_e459b95e","updated":"2022-04-26 12:26:05.000000000","message":"this is my understanding also, with strong documentation we can make users understand that with \"cascase\u003dtrue\" we leave the RESTful DELETE operation.\n\nI like the 2 phased operation in the previous commit (1.)check and fail or go, 2.)go on asynchronously)","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fbd8cb6c66ccd9a16cbe4c022f45ef6ee41403a2","unresolved":true,"context_lines":[{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data Model Impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a7788f5c_697bb68d","line":131,"range":{"start_line":131,"start_character":42,"end_line":131,"end_character":57},"updated":"2022-04-22 07:38:58.000000000","message":"We don\u0027t have async API calls in the Neutron server. How do you plan to implement them?","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"865ac65ca8c6005d16d1d731fe523d8b150a4746","unresolved":true,"context_lines":[{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data Model Impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b0d6f8ba_e7101e49","line":131,"range":{"start_line":131,"start_character":42,"end_line":131,"end_character":57},"in_reply_to":"59542eb1_6a90ecde","updated":"2022-04-27 12:52:12.000000000","message":"You\u0027re right, there may be non-trivial details to the implementation. I guess we would need at least to extend the enum of potential network status-es (for example a new DELETING status), or even introduce a deletion_status field (hopefully the first would be enough).\n\nIf a cascaded delete gets interrupted for example by neutron-server being shut down or dying, I believe we would not need to implement a persistent task queue, just make sure that a 2nd delete request picks up from where the interrupted left off.\n\nOn a high level, I believe it\u0027s better to fit the implementation to the desired API behavior than the other way around. On the other hand I did not think the implementation through yet and I\u0027m sure I\u0027m missing important details.","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b71b64b93f3305fdbe0402858e0fe6c9a59f2261","unresolved":true,"context_lines":[{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data Model Impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"59542eb1_6a90ecde","line":131,"range":{"start_line":131,"start_character":42,"end_line":131,"end_character":57},"in_reply_to":"a7788f5c_697bb68d","updated":"2022-04-26 12:26:05.000000000","message":"We have see _4 (https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#synchronous-versus-asynchronous-plug-in-behavior ), that is for ports.\nAs it is written above though this breaks the current API behaviour, but only if the user calls DELETE /network?cascade\u003dtrue , so all \"legacy\" calls are intact.","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":true,"context_lines":[{"line_number":128,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":129,"context_line":"  API behaviour [4]_."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data Model Impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"72607fc0_4f411da1","line":131,"range":{"start_line":131,"start_character":42,"end_line":131,"end_character":57},"in_reply_to":"b0d6f8ba_e7101e49","updated":"2022-04-27 14:32:44.000000000","message":"ok, let\u0027s change it to asynchronous API idea","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fbd8cb6c66ccd9a16cbe4c022f45ef6ee41403a2","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The proposal of this spec is to implement second solution."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data Model Impact"},{"line_number":134,"context_line":"-----------------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c7fbd50a_f708950d","line":133,"updated":"2022-04-22 07:38:58.000000000","message":"Regardless of the method (1 or 2) implemented, do you have a mechanism to lock any other operation on this network? Some operations, for example port update/deletion, need to be executed in an isolated DB txn. If you are going to execute several DB txn, how are you going to guarantee that other API calls create resources on this network?","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ba98158e624ce69ebb87950cee51564bebb7d4ac","unresolved":true,"context_lines":[{"line_number":161,"context_line":"-----------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Primary assignee:"},{"line_number":164,"context_line":"  Slawek Kaplonski \u003cskaplons@redhat.com\u003e (IRC: slaweq)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2506fa6d_0c6de8c4","line":164,"range":{"start_line":164,"start_character":2,"end_line":164,"end_character":54},"updated":"2022-04-22 07:05:29.000000000","message":"please add yourself as assignee :-)","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":34728,"name":"Sharon Koech","display_name":"skoech","email":"sharon.koech@canonical.com","username":"skoech"},"change_message_id":"a6644bc8130f337bf583c2e61cd3e5a957713df5","unresolved":false,"context_lines":[{"line_number":161,"context_line":"-----------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Primary assignee:"},{"line_number":164,"context_line":"  Slawek Kaplonski \u003cskaplons@redhat.com\u003e (IRC: slaweq)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6f58434e_04243df7","line":164,"range":{"start_line":164,"start_character":2,"end_line":164,"end_character":54},"in_reply_to":"2506fa6d_0c6de8c4","updated":"2022-08-05 08:33:42.000000000","message":"Done","commit_id":"e631d110db6247634fbca28e1a9a57e3101d9776"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b71b64b93f3305fdbe0402858e0fe6c9a59f2261","unresolved":true,"context_lines":[{"line_number":196,"context_line":".. [1] https://docs.openstack.org/kuryr/latest/"},{"line_number":197,"context_line":".. [2] https://docs.openstack.org/api-ref/load-balancer/v2/?expanded\u003dremove-a-load-balancer-detail#remove-a-load-balancer"},{"line_number":198,"context_line":".. [3] https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#networks"},{"line_number":199,"context_line":".. [4] https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#synchronous-versus-asynchronous-plug-in-behavior"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ce3b76be_b198cffc","line":199,"range":{"start_line":199,"start_character":7,"end_line":199,"end_character":143},"updated":"2022-04-26 12:26:05.000000000","message":"This should be shorter:\nhttps://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#synchronous-versus-asynchronous-plug-in-behavior","commit_id":"c48118b782f1592facaae368a6b6a7486f4239fa"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cef195dc5f2c7f69ad678bccfd29f6c3cd4c7f81","unresolved":false,"context_lines":[{"line_number":196,"context_line":".. [1] https://docs.openstack.org/kuryr/latest/"},{"line_number":197,"context_line":".. [2] https://docs.openstack.org/api-ref/load-balancer/v2/?expanded\u003dremove-a-load-balancer-detail#remove-a-load-balancer"},{"line_number":198,"context_line":".. [3] https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#networks"},{"line_number":199,"context_line":".. [4] https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003ddelete-network-detail#synchronous-versus-asynchronous-plug-in-behavior"}],"source_content_type":"text/x-rst","patch_set":5,"id":"92c7205b_dadbc3bf","line":199,"range":{"start_line":199,"start_character":7,"end_line":199,"end_character":143},"in_reply_to":"ce3b76be_b198cffc","updated":"2022-04-27 14:32:44.000000000","message":"Done","commit_id":"c48118b782f1592facaae368a6b6a7486f4239fa"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fe18d81db1c9962d18781e5a0e0a9ffd8cc1018d","unresolved":true,"context_lines":[{"line_number":129,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":130,"context_line":"  API behaviour [4]_."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The proposal of this spec is to implement third solution."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data Model Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1bf31f18_aacbc47e","line":132,"range":{"start_line":132,"start_character":0,"end_line":132,"end_character":20},"updated":"2022-07-20 09:18:28.000000000","message":"Sorry, what is this 3rd solution? Maybe I\u0027m not understanding correctly the spec.","commit_id":"93788a0be9a27c7d2093d6f9db2d38f46831af78"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"82c4782edca2bdac334984021aa7723d793e4cfc","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  loadbalancer [2]_. But it would break the documented Neutron"},{"line_number":130,"context_line":"  API behaviour [4]_."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The proposal of this spec is to implement third solution."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Data Model Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"e7161b7b_72c21c09","line":132,"range":{"start_line":132,"start_character":0,"end_line":132,"end_character":20},"in_reply_to":"1bf31f18_aacbc47e","updated":"2022-07-27 13:40:38.000000000","message":"I updated the spec to make it more clear.","commit_id":"93788a0be9a27c7d2093d6f9db2d38f46831af78"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5ee27a4d72bdd18eeffce201ca6739faa26c780c","unresolved":true,"context_lines":[{"line_number":175,"context_line":"Work Items"},{"line_number":176,"context_line":"----------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* REST API update."},{"line_number":179,"context_line":"* ML2 plugin update."},{"line_number":180,"context_line":"* CLI update."},{"line_number":181,"context_line":"* Documentation."}],"source_content_type":"text/x-rst","patch_set":6,"id":"4847561e_077a3218","line":178,"range":{"start_line":178,"start_character":2,"end_line":178,"end_character":17},"updated":"2022-05-24 11:20:57.000000000","message":"I checked this part so far:\n- we need a shim extension as I see, at least I can\u0027t see a way to tell DELETE v2.0/networks/\u003cuuid\u003e to accept ?cascade\u003dtrue with an extension\n\n- Change pecan_wsgi/controllers/resource.py delete method to accept cascade as parameter:\n     @utils.when_delete(index)\n-    def delete(self):\n+    def delete(self, cascade\u003dFalse):\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/pecan_wsgi/controllers/resource.py#L77\n\n- Make sure that cascade option is chaining through all the methods:\n-- Ml2Plugin.delete_network\n-- NeutronDbPluginV2.delete_network","commit_id":"93788a0be9a27c7d2093d6f9db2d38f46831af78"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1169a8892d21efc49f3575fa67b972d277436e53","unresolved":false,"context_lines":[{"line_number":130,"context_line":"   API behaviour [4]_."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The proposal of this spec is to implement third solution from the ones mentioned"},{"line_number":133,"context_line":"above and make this Neutron API asynchronous."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Data Model Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"840d7078_5485e068","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":2},"updated":"2022-07-29 10:25:52.000000000","message":"That means we\u0027ll need to update the documentation. Both [4]_ link and the specific documentation for this new API call.","commit_id":"a0d3454d8f6690c3ff711a4d7c056d2a8ecd2799"}]}
