)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"81fcb0c8_436313a5","updated":"2025-01-08 13:42:32.000000000","message":"-1","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"}],"specs/2025.1/approved/preserve-port-on-vm-delete.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* As a user, I want to delete port (created by user) on instance deletion,"},{"line_number":28,"context_line":"  if instance was booted with port UUID, instead of current behaviour of"},{"line_number":29,"context_line":"  keeping the port on instance deletion."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* As a user, I want to keep port (created by nova) on instance deletion, if"},{"line_number":32,"context_line":"  instance was booted with network UUID, instead of current behaviour of"}],"source_content_type":"text/x-rst","patch_set":2,"id":"84972a9a_2fba4838","line":29,"updated":"2025-01-08 13:42:32.000000000","message":"Could you describe the scenario when this is useful? I feel if the human created the port in the first place then it is fine that we expect that the human deletes it later.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"d50ffc66fcff89170f9311ea3e253e2af985f48a","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* As a user, I want to delete port (created by user) on instance deletion,"},{"line_number":28,"context_line":"  if instance was booted with port UUID, instead of current behaviour of"},{"line_number":29,"context_line":"  keeping the port on instance deletion."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* As a user, I want to keep port (created by nova) on instance deletion, if"},{"line_number":32,"context_line":"  instance was booted with network UUID, instead of current behaviour of"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0bdff2b4_f426f402","line":29,"in_reply_to":"84972a9a_2fba4838","updated":"2025-02-21 19:34:27.000000000","message":"In our usecase, we want to match a port resource lifecycle with VM lifecycle, especially the delete operation.\n\nOne issue to create a port at vm creation specified by network uuid is cloud user can\u0027t identify fixed ip address until VM boot finishes. so cloud user creates a port first in advance in order to know fixed ip address, then they creates vm. The problem happens at vm delete time. Cloud user needs to keep it mind which vm is booted with network id or port id.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":true,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* As a user, I want to keep port (created by nova) on instance deletion, if"},{"line_number":32,"context_line":"  instance was booted with network UUID, instead of current behaviour of"},{"line_number":33,"context_line":"  deleting the port on instance deletion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f593c580_141d3099","line":33,"updated":"2025-01-08 13:42:32.000000000","message":"again what is the scenario when this is useful?","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"07c88fca12f7a562f3ccfd331869db093d407905","unresolved":true,"context_lines":[{"line_number":31,"context_line":"* As a user, I want to keep port (created by nova) on instance deletion, if"},{"line_number":32,"context_line":"  instance was booted with network UUID, instead of current behaviour of"},{"line_number":33,"context_line":"  deleting the port on instance deletion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"38075b66_7ee81096","line":34,"updated":"2024-12-04 10:48:29.000000000","message":"these are not the only usecauses,\n\ninterface detach was not originally intended to delete the port, that behaviour and the delete on terminate behavior in general came form nova networks.\n\n\nthe original motivator for this proposal was for error recovery.\n\nthere are times where the easiest way to correct a problem is to delete\na vm keeping the ports and volumes and just booting a new vm with the same ports and volumes.\n\nif the port was created by nova via passing a network, that is not possible to do today because the network port will be deleted with the vm.\n\nso the primary motivator for this was ot allow deteach to just detach the port with deleting it even if it was created by nova.\n\nwe shoudl recored that as a uses case.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":true,"context_lines":[{"line_number":31,"context_line":"* As a user, I want to keep port (created by nova) on instance deletion, if"},{"line_number":32,"context_line":"  instance was booted with network UUID, instead of current behaviour of"},{"line_number":33,"context_line":"  deleting the port on instance deletion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a927bfe_191d7587","line":34,"in_reply_to":"38075b66_7ee81096","updated":"2025-01-08 13:42:32.000000000","message":"\u003e there are times where the easiest way to correct a problem is to delete\na vm keeping the ports and volumes and just booting a new vm with the same ports and volumes.\n\nThanks, that sounds like a real use case.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"07c88fca12f7a562f3ccfd331869db093d407905","unresolved":true,"context_lines":[{"line_number":41,"context_line":"- Using the neutron tags API, we need to add \"nova:preserve_on_delete\" tag"},{"line_number":42,"context_line":"  if we want to keep the port on instance deletion or \"nova:remove_on_delete\""},{"line_number":43,"context_line":"  tag to delete the port on instance deletion irrespective of how the port"},{"line_number":44,"context_line":"  was created."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"- If ports are created by nova (for example when booting instance with a"},{"line_number":47,"context_line":"  network UUID), we need to have tag \"nova:preserve_on_delete\" on port to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d8d18168_f3ea00e8","line":44,"updated":"2024-12-04 10:48:29.000000000","message":"so when we disucsed this in the bobcat ptg we also discussed a tags v2 extention that supprot key value pairs.\n\nim not really ok with haveing both nova:preserve_on_delete and nova:remove_on_delete as two sperate tags as you coudl end up with both which would be invlaid.\n\nin my mind this proposal has a depency on a tags v2 api in neutorn.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"72bd3cf51ce440051f06a5816ee9713f46ec0999","unresolved":true,"context_lines":[{"line_number":41,"context_line":"- Using the neutron tags API, we need to add \"nova:preserve_on_delete\" tag"},{"line_number":42,"context_line":"  if we want to keep the port on instance deletion or \"nova:remove_on_delete\""},{"line_number":43,"context_line":"  tag to delete the port on instance deletion irrespective of how the port"},{"line_number":44,"context_line":"  was created."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"- If ports are created by nova (for example when booting instance with a"},{"line_number":47,"context_line":"  network UUID), we need to have tag \"nova:preserve_on_delete\" on port to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"80dc4248_b63d2fd0","line":44,"in_reply_to":"22438c7d_f36c8782","updated":"2025-01-08 14:05:32.000000000","message":"\u003e What we lose if we don\u0027t have key:values? Do we loose some features? I don\u0027t think so. \n\u003e \nIMO also we don\u0027t loose anything.\n\n\u003e Will the upgrade be a pain from tags v1 to tags v2? Maybe, we need to carry the support for the old v1 tag support for a while. \n\u003e\nNot really, we just need to remove the support for tags v1 and add support for tags v2. \n\u003e Do we know if neutron is working on the v2 or is it stalled out? \n\u003e \nDon\u0027t have any info about that presently.\n\n\u003e Could the author of this proposal can help with the neturon v2 effort instead?\nI don\u0027t have much knowledge about that, but if someone could guide, I could try to do that.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":true,"context_lines":[{"line_number":41,"context_line":"- Using the neutron tags API, we need to add \"nova:preserve_on_delete\" tag"},{"line_number":42,"context_line":"  if we want to keep the port on instance deletion or \"nova:remove_on_delete\""},{"line_number":43,"context_line":"  tag to delete the port on instance deletion irrespective of how the port"},{"line_number":44,"context_line":"  was created."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"- If ports are created by nova (for example when booting instance with a"},{"line_number":47,"context_line":"  network UUID), we need to have tag \"nova:preserve_on_delete\" on port to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"22438c7d_f36c8782","line":44,"in_reply_to":"29e6e173_5aa98a79","updated":"2025-01-08 13:42:32.000000000","message":"What we lose if we don\u0027t have key:values? Do we loose some features? I don\u0027t think so. \n\nWill the upgrade be a pain from tags v1 to tags v2? Maybe, we need to carry the support for the old v1 tag support for a while. \n\nDo we know if neutron is working on the v2 or is it stalled out? \n\nCould the author of this proposal can help with the neturon v2 effort instead?","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"d50ffc66fcff89170f9311ea3e253e2af985f48a","unresolved":true,"context_lines":[{"line_number":41,"context_line":"- Using the neutron tags API, we need to add \"nova:preserve_on_delete\" tag"},{"line_number":42,"context_line":"  if we want to keep the port on instance deletion or \"nova:remove_on_delete\""},{"line_number":43,"context_line":"  tag to delete the port on instance deletion irrespective of how the port"},{"line_number":44,"context_line":"  was created."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"- If ports are created by nova (for example when booting instance with a"},{"line_number":47,"context_line":"  network UUID), we need to have tag \"nova:preserve_on_delete\" on port to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b0b68383_44a91e85","line":44,"in_reply_to":"80dc4248_b63d2fd0","updated":"2025-02-21 19:34:27.000000000","message":"I\u0027m curious that using the neutron tagv2 is a decision at the Bobcat ptg?\n\nI couldn\u0027t find the ptg disucssion log, so if I say something wrong, please correct me.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"754f0b4af1508a7c8cbc90a967010499bc8673cd","unresolved":true,"context_lines":[{"line_number":41,"context_line":"- Using the neutron tags API, we need to add \"nova:preserve_on_delete\" tag"},{"line_number":42,"context_line":"  if we want to keep the port on instance deletion or \"nova:remove_on_delete\""},{"line_number":43,"context_line":"  tag to delete the port on instance deletion irrespective of how the port"},{"line_number":44,"context_line":"  was created."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"- If ports are created by nova (for example when booting instance with a"},{"line_number":47,"context_line":"  network UUID), we need to have tag \"nova:preserve_on_delete\" on port to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"29e6e173_5aa98a79","line":44,"in_reply_to":"d8d18168_f3ea00e8","updated":"2024-12-05 16:00:44.000000000","message":"I agree that the idea solution would be a key:value feature on the ports (call it tags v2 if we have to) where Neutron enforces the uniqueness of the key.\n\nThat being said, perfect is the enemy of good, so I wonder if we can do something acceptable _now_ rather than waiting for said tags v2 API that we have no idea if/when it will come.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148f7fe4f0220b8cd2815086987c0a17a50b1100","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d806a780_d6e3bc53","line":56,"updated":"2025-01-08 13:42:32.000000000","message":"What will happen if both tags will be on the port? \n\nOr neither of the tags are on the port?","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"d50ffc66fcff89170f9311ea3e253e2af985f48a","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"2acd77b9_a50da1c8","line":56,"in_reply_to":"8b993cbe_d9a1a4f3","updated":"2025-02-21 19:34:27.000000000","message":"There is an edge case this feature needs to support\n\n1. Admin creates a port.\n2. Cloud user creates VM using the port created by admin.\n3. The port has `nova:remove_on_delete` tag.\n4. Cloud user tries to delete the vm, then nova tries to delete the port using the user context.\n\nAt step4, nova succeeds to delete port using elevated context or the instance status gets to ERROR because of port deletion failure.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"aae47a3f13d9d3b681116a4f9876d928fb6e3979","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d6d62b96_08b5e2a2","line":56,"in_reply_to":"97f2a856_d85b97f8","updated":"2025-01-10 13:24:03.000000000","message":"As present, AFAIK we don\u0027t prevent user from deleting the instance in any condition, so that doesn\u0027t look promising to me.\n\nIMO if both tags are present on port, then user is aware about the tags and intentionally set those. So we can go with existing behaviour for both cases (user created or nova created ports) or keep the ports in both cases. So user can delete those ports explicitly if not required.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0483e8133dc1941c13eb0de5260b590923092d10","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"97f2a856_d85b97f8","line":56,"in_reply_to":"aad64fa1_068e60eb","updated":"2025-01-10 00:36:48.000000000","message":"the abltiy to have both tags on the port is why i wanted key values so that cant happne\n\ni think if both tags are on the prot our options are:\n1.) refuse to delete the vm\n2.) preserve the port to avoid losing port configuration (ip, qos, secuirty groups, mac)\n3.) fall back ot old bhaivor.\n\nthat more or less in my prefernce order.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"42f6f1bfed8a91ed641d398db5884afa3b773625","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"8b993cbe_d9a1a4f3","line":56,"in_reply_to":"d6d62b96_08b5e2a2","updated":"2025-01-10 13:33:45.000000000","message":"your right that we normaly dont rpevent deletign a vm. my counter point to that is if they user set both tag they could remvoe the relevent one to express the desired behavior and then reissue the delete.\n\nbut yes we could go with option 3 and fall back to whatever is in novas db.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"72bd3cf51ce440051f06a5816ee9713f46ec0999","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"nova:remove_on_delete\" on port to override default behaviour and delete the"},{"line_number":54,"context_line":"  port on instance deletion. By default for user created ports, we would have"},{"line_number":55,"context_line":"  \"nova:preserve_on_delete\" tag for existing behaviour."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"aad64fa1_068e60eb","line":56,"in_reply_to":"d806a780_d6e3bc53","updated":"2025-01-08 14:05:32.000000000","message":"If neither of tags are there on port, then we go with existing behaviour.\nIf both tags are present, then we can go for existing behaviour or new behaviour, after discussion within ourselves.","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"d50ffc66fcff89170f9311ea3e253e2af985f48a","unresolved":true,"context_lines":[{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"None"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Data model impact"},{"line_number":63,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dbd3e53e_07c5af80","line":60,"updated":"2025-02-21 19:34:27.000000000","message":"One alternative is to introduce `delete_on_terminate` flag input at create instance API and network attach API request body, like block_device_mapping.\n\n```\n{\n  \"server\": {\n    \"networks\" : [{\n      \"port\": \"\u003cport id\u003e\",\n      \"delete_on_terminate\": true\n      }],\n      ....\n}\n```","commit_id":"7eebae13141e40256179ef11b86c12ad0e18bfa5"}]}
