)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"f8b589fae6536b589016378592457b3d2d55fe86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1042eef3_c25fdad6","updated":"2024-06-03 08:40:14.000000000","message":"Although we have 504592, I belive this to be more complete and adresses problems that that patchset does not. Not to mention, that it looks stale.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0569cdbfaea9358f25f5d51aa860edb3d66088aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6a619e5e_6be288f5","updated":"2024-06-03 08:40:38.000000000","message":"Although we have 504592, I belive this to be more complete and adresses problems that that patchset does not. Not to mention, that it looks stale.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7a25701a_447fb054","updated":"2024-06-05 14:09:14.000000000","message":"only a very light review but I found enough already for -1.\n\nI also want to reiterate -as discussed in todays IRC meeting - that this should maybe better split up into two patches, one doing refactoring and the other fixing bugs/extending functionality.\n\nalso be careful - that means: provide an escape hatch - when deleting containers not deployed by kolla, as discussed in the IRC meeting as well.\n\nLet me notice again though that I like the general idea of this, but please take it even further: less bash commands, camouflaged by \"ansible shell\" and friends please.\n\nThank you for the effort!","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a15af694_173c6248","updated":"2024-06-19 08:51:58.000000000","message":"rn working on the logic the removal of all containers and images.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"9c7a0c512dc47a000d085004e8db33dee1610944","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6cdecb4a_eb0dd6d8","updated":"2025-01-31 09:43:14.000000000","message":"As soon as swift is removed in 2025.2, this patch set can move forward.","commit_id":"d820135d6eca2705fdaf40fe914e895031bb3b9f"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"cef1a4b07109a46a3a2f578d9425eb8289f180f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b036dca7_1125e6f8","updated":"2024-10-08 06:40:25.000000000","message":"Is waiting for https://review.opendev.org/c/openstack/kolla-ansible/+/797498","commit_id":"d820135d6eca2705fdaf40fe914e895031bb3b9f"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"7d5d073f2ad4dfc0852bdd654976d76adab72bea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"40afe69a_c93a05da","updated":"2024-06-20 12:10:38.000000000","message":"dont forget about podman deployments","commit_id":"d820135d6eca2705fdaf40fe914e895031bb3b9f"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"b8aff8c2db52a6868fcc0bf48425e8b4c3829b14","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"cb4f6ce7_27d7f324","updated":"2025-08-15 06:54:22.000000000","message":"Is a CI test of the destroy role something that I should also take a look at? Maybe test of all net name spaces were removed, all containers are gone except for those not created by kolla, volumes removed, etc. I don\u0027t think that this is something that would need to run on each new patchset, but maybe am experimental job or gating job? Please let me know what you think.","commit_id":"c5a56269b00159529b307a979b34c01399251a43"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"b7625fa4be526840246954c87690e5794a9f4982","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f2bd8395_6461f9d4","in_reply_to":"cb4f6ce7_27d7f324","updated":"2025-10-07 16:58:32.000000000","message":"I think an experimental job would be best for starters","commit_id":"c5a56269b00159529b307a979b34c01399251a43"}],"ansible/roles/service-destroy/tasks/before_destroy.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# This file contains all destroy tasks that need to be run before the containers are stopped."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"22c6d9d0_2551bf78","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":15},"updated":"2024-06-05 14:09:14.000000000","message":"nit: typo","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# This file contains all destroy tasks that need to be run before the containers are stopped."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e62647ba_eda645fa","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":15},"in_reply_to":"22c6d9d0_2551bf78","updated":"2024-06-19 08:51:58.000000000","message":"Done","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"},{"line_number":8,"context_line":"        container: \"neutron_openvswitch_agent\""},{"line_number":9,"context_line":"        user: root"},{"line_number":10,"context_line":"        command: \u003e-"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"922493ef_b3e6e3af","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"updated":"2024-06-05 14:09:14.000000000","message":"we usually use docker-py instead of community.docker, or rather our own wrapper kolla-toolbox.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"e6e8c27300d51537b7a7e707032c4f0937fc8c6b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"},{"line_number":8,"context_line":"        container: \"neutron_openvswitch_agent\""},{"line_number":9,"context_line":"        user: root"},{"line_number":10,"context_line":"        command: \u003e-"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"c7244e20_a9bfc5f8","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"in_reply_to":"2c48ee64_7e352b51","updated":"2024-06-21 08:03:47.000000000","message":"Done","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9acc654b9851e9aa49301551174fcd54095c6d29","unresolved":true,"context_lines":[{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"},{"line_number":8,"context_line":"        container: \"neutron_openvswitch_agent\""},{"line_number":9,"context_line":"        user: root"},{"line_number":10,"context_line":"        command: \u003e-"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"920559d1_66eb3d2e","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"in_reply_to":"389f627f_e3c3a52d","updated":"2024-06-20 12:08:21.000000000","message":"well for one thing, we also support podman now, so I guess it is bound to fail sometime in the future when assuming that a docker specific lib also works for podman.\n\nWe might be lucky with calls like \"exec\", but I think it is way cleaner to use an abstraction that calls the correct container engine, depending on the deployment.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"add28cdcdc788819af2209d6ab59ac324076091f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"},{"line_number":8,"context_line":"        container: \"neutron_openvswitch_agent\""},{"line_number":9,"context_line":"        user: root"},{"line_number":10,"context_line":"        command: \u003e-"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"2c48ee64_7e352b51","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"in_reply_to":"920559d1_66eb3d2e","updated":"2024-06-21 06:59:34.000000000","message":"The latest patchset5 should address it. I am no longer using engine-specific modules.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":true,"context_lines":[{"line_number":4,"context_line":"# Remove nutron bridge"},{"line_number":5,"context_line":"- block:"},{"line_number":6,"context_line":"    - name: Run neutron OVS cleanup"},{"line_number":7,"context_line":"      community.docker.docker_container_exec:"},{"line_number":8,"context_line":"        container: \"neutron_openvswitch_agent\""},{"line_number":9,"context_line":"        user: root"},{"line_number":10,"context_line":"        command: \u003e-"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"389f627f_e3c3a52d","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"in_reply_to":"922493ef_b3e6e3af","updated":"2024-06-19 08:51:58.000000000","message":"I tried to mimick what we already have in the project with this. Is it better?","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":13,"context_line":"          --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini"},{"line_number":14,"context_line":"          --ovs_all_ports"},{"line_number":15,"context_line":"    - name: Remove OVS bridges"},{"line_number":16,"context_line":"      community.docker.docker_container_exec:"},{"line_number":17,"context_line":"        container: \"openvswitch_vswitchd\""},{"line_number":18,"context_line":"        command: \u003e-"},{"line_number":19,"context_line":"          bash -c \u0027for br in `ovs-vsctl list-br`;do ovs-vsctl --if-exists del-br $br;done\u0027"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"d45e1ba6_03afda09","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"updated":"2024-06-05 14:09:14.000000000","message":"dito","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"e6e8c27300d51537b7a7e707032c4f0937fc8c6b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"          --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini"},{"line_number":14,"context_line":"          --ovs_all_ports"},{"line_number":15,"context_line":"    - name: Remove OVS bridges"},{"line_number":16,"context_line":"      community.docker.docker_container_exec:"},{"line_number":17,"context_line":"        container: \"openvswitch_vswitchd\""},{"line_number":18,"context_line":"        command: \u003e-"},{"line_number":19,"context_line":"          bash -c \u0027for br in `ovs-vsctl list-br`;do ovs-vsctl --if-exists del-br $br;done\u0027"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"d8064aee_f8fc72e1","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"in_reply_to":"d45e1ba6_03afda09","updated":"2024-06-21 08:03:47.000000000","message":"Done","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":16,"context_line":"      community.docker.docker_container_exec:"},{"line_number":17,"context_line":"        container: \"openvswitch_vswitchd\""},{"line_number":18,"context_line":"        command: \u003e-"},{"line_number":19,"context_line":"          bash -c \u0027for br in `ovs-vsctl list-br`;do ovs-vsctl --if-exists del-br $br;done\u0027"},{"line_number":20,"context_line":"  when: \"\u0027openvswitch_vswitchd\u0027 in service_destroy_containers\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"296d9aa8_b73d6e0c","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":2},"updated":"2024-06-05 14:09:14.000000000","message":"it would be nice if we could use the equivalence of this, instead of bash shell commands:\n\nhttps://github.com/openstack/kolla-ansible/blob/master/ansible/roles/ovn-controller/tasks/setup-ovs.yml#L2","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":true,"context_lines":[{"line_number":16,"context_line":"      community.docker.docker_container_exec:"},{"line_number":17,"context_line":"        container: \"openvswitch_vswitchd\""},{"line_number":18,"context_line":"        command: \u003e-"},{"line_number":19,"context_line":"          bash -c \u0027for br in `ovs-vsctl list-br`;do ovs-vsctl --if-exists del-br $br;done\u0027"},{"line_number":20,"context_line":"  when: \"\u0027openvswitch_vswitchd\u0027 in service_destroy_containers\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e6d765c9_fd3bf1e4","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":2},"in_reply_to":"296d9aa8_b73d6e0c","updated":"2024-06-19 08:51:58.000000000","message":"As far as I could find, it looks like the openvswitch_vswitchd module (similar to ip_netns module) is made for setting and not reading. This is the best solution I could find so far, however it still uses command partially.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"e6e8c27300d51537b7a7e707032c4f0937fc8c6b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      community.docker.docker_container_exec:"},{"line_number":17,"context_line":"        container: \"openvswitch_vswitchd\""},{"line_number":18,"context_line":"        command: \u003e-"},{"line_number":19,"context_line":"          bash -c \u0027for br in `ovs-vsctl list-br`;do ovs-vsctl --if-exists del-br $br;done\u0027"},{"line_number":20,"context_line":"  when: \"\u0027openvswitch_vswitchd\u0027 in service_destroy_containers\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1f65eae5_ab06f5a4","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":2},"in_reply_to":"e6d765c9_fd3bf1e4","updated":"2024-06-21 08:03:47.000000000","message":"Acknowledged","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"}],"ansible/roles/service-destroy/tasks/cleanup_containers.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Find running QEMU processes"},{"line_number":3,"context_line":"  shell: \"pgrep -l qemu | awk \u0027!/qemu-ga/ \u0026\u0026 !/qemu-img/ {print $1}\u0027\""},{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: qemu_pids"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"c28f2b7a_9c9889f6","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":2},"updated":"2024-06-05 14:09:14.000000000","message":"you should be able to do this with pgrep alone, something like this should suffice:\n\n`pgrep -x qemu-system-x86`","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Find running QEMU processes"},{"line_number":3,"context_line":"  shell: \"pgrep -l qemu | awk \u0027!/qemu-ga/ \u0026\u0026 !/qemu-img/ {print $1}\u0027\""},{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: qemu_pids"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"71bffe91_fba3b7d4","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":2},"in_reply_to":"c28f2b7a_9c9889f6","updated":"2024-06-19 08:51:58.000000000","message":"Yes, with some return-code handling it works.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: qemu_pids"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Fail if nova-libvirt is used and processes are running"},{"line_number":8,"context_line":"  fail:"},{"line_number":9,"context_line":"    msg: |-"},{"line_number":10,"context_line":"      Some qemu processes were detected."},{"line_number":11,"context_line":"      Container engine {{ kolla_container_engine }} will not be able to stop the nova_libvirt container with those running."},{"line_number":12,"context_line":"      Please clean them up before rerunning this script."},{"line_number":13,"context_line":"  when: \"(qemu_pids.stdout_lines | length) \u003e 0 and \u0027nova_libvirt\u0027 in service_destroy_containers\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: Stopping and removing containers"},{"line_number":16,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ce270cb4_3b87e401","line":13,"range":{"start_line":7,"start_character":0,"end_line":13,"end_character":96},"updated":"2024-06-05 14:09:14.000000000","message":"what is the logic here? of course we can stop and even restart nova_libvirt with running qemu processes? they run in the host pid namespace, not inside the container.\n\nthe remains of what is running inside a container should run in nova_compute instead, if I remember correctly.\n\nThis seems just plain wrong to me, or I don\u0027t really understand the purpose.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":true,"context_lines":[{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: qemu_pids"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Fail if nova-libvirt is used and processes are running"},{"line_number":8,"context_line":"  fail:"},{"line_number":9,"context_line":"    msg: |-"},{"line_number":10,"context_line":"      Some qemu processes were detected."},{"line_number":11,"context_line":"      Container engine {{ kolla_container_engine }} will not be able to stop the nova_libvirt container with those running."},{"line_number":12,"context_line":"      Please clean them up before rerunning this script."},{"line_number":13,"context_line":"  when: \"(qemu_pids.stdout_lines | length) \u003e 0 and \u0027nova_libvirt\u0027 in service_destroy_containers\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: Stopping and removing containers"},{"line_number":16,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"143323e2_c9fd6925","line":13,"range":{"start_line":7,"start_character":0,"end_line":13,"end_character":96},"in_reply_to":"ce270cb4_3b87e401","updated":"2024-06-19 08:51:58.000000000","message":"It appears that you are right, docker has no problem removing any nova container with VMs still running. I guess it is just legacy code that might have done something in the past. With this in mind, I\u0027ll go through the code more in depth to see if there aren\u0027t more of these legacy things that can be removed.\n\nI\u0027ve also discussed this with m.hiner and i.halomi and it looks like they have done some testing during their podman migration scenarios and if you leave the VMs running, you can\u0027t completely remove docker. For whatever reason, the running VM will prevent you to remove some parts of docker.\n\nOn more general note - should the removal fail if some of the VMs are stil running? I belive that it should fail when removing OS completely. Is there a scenario where you wouldn\u0027t want this behaviour?","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"}],"ansible/roles/service-destroy/tasks/cleanup_host.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      command: ip netns list"},{"line_number":7,"context_line":"      changed_when: false"},{"line_number":8,"context_line":"      register: netns"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"884d2fdd_1655162b","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"updated":"2024-06-05 14:09:14.000000000","message":"this returns a list of this format:\n\n`ovnmeta-eea675ef-7853-42b8-b3ad-8b9473c74ce3 (id: 15)\n`\n\nso I guess this should be `ip nets list | awk \u0027{ print $1 }\u0027`?\n\nWas this code tested?","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      command: ip netns list"},{"line_number":7,"context_line":"      changed_when: false"},{"line_number":8,"context_line":"      register: netns"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8584ac0e_4619ecd1","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"in_reply_to":"884d2fdd_1655162b","updated":"2024-06-19 08:51:58.000000000","message":"I tested it, but since I did not have any VMs running in that deployment, this didn\u0027t get caught.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"9b341fc39c08dae3419f01f9f2965da26b6fa744","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        src: /etc/fstab"},{"line_number":50,"context_line":"        dest: /etc/fstab.bak"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    - name: Remove swift references from /etc/fstab"},{"line_number":53,"context_line":"      lineinfile:"},{"line_number":54,"context_line":"        path: /etc/fstab"},{"line_number":55,"context_line":"        state: absent"},{"line_number":56,"context_line":"        regexp: \"^.*\\/srv\\/node\\/.*$\""},{"line_number":57,"context_line":"  when: enable_swift | bool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- block:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"c7ff2cfb_84291051","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":37},"updated":"2024-06-05 14:09:14.000000000","message":"I don\u0027t like this. This looks rather dangerous.\n\nCan we maybe use https://docs.ansible.com/ansible/latest/collections/ansible/posix/mount_module.html#parameter-state instead?","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"add28cdcdc788819af2209d6ab59ac324076091f","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        src: /etc/fstab"},{"line_number":50,"context_line":"        dest: /etc/fstab.bak"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    - name: Remove swift references from /etc/fstab"},{"line_number":53,"context_line":"      lineinfile:"},{"line_number":54,"context_line":"        path: /etc/fstab"},{"line_number":55,"context_line":"        state: absent"},{"line_number":56,"context_line":"        regexp: \"^.*\\/srv\\/node\\/.*$\""},{"line_number":57,"context_line":"  when: enable_swift | bool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- block:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"906b1652_e8aa5f3a","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":37},"in_reply_to":"0c77f39d_de9a702b","updated":"2024-06-21 06:59:34.000000000","message":"Ok, this \"works\". The logic itself is ok, but the patchset for swift modernization is still not merged and this wont work properly without it.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"41a33da43bc8d95ba425073a784fc5d6ebf9933f","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        src: /etc/fstab"},{"line_number":50,"context_line":"        dest: /etc/fstab.bak"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    - name: Remove swift references from /etc/fstab"},{"line_number":53,"context_line":"      lineinfile:"},{"line_number":54,"context_line":"        path: /etc/fstab"},{"line_number":55,"context_line":"        state: absent"},{"line_number":56,"context_line":"        regexp: \"^.*\\/srv\\/node\\/.*$\""},{"line_number":57,"context_line":"  when: enable_swift | bool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- block:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"f702ca24_28f8ae79","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":37},"in_reply_to":"906b1652_e8aa5f3a","updated":"2025-03-25 13:12:58.000000000","message":"Not relevant (?) as swift was removed.","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"87224c094b8b186ce857bf3865b76604691c3b02","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        src: /etc/fstab"},{"line_number":50,"context_line":"        dest: /etc/fstab.bak"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    - name: Remove swift references from /etc/fstab"},{"line_number":53,"context_line":"      lineinfile:"},{"line_number":54,"context_line":"        path: /etc/fstab"},{"line_number":55,"context_line":"        state: absent"},{"line_number":56,"context_line":"        regexp: \"^.*\\/srv\\/node\\/.*$\""},{"line_number":57,"context_line":"  when: enable_swift | bool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- block:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"0c77f39d_de9a702b","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":37},"in_reply_to":"c7ff2cfb_84291051","updated":"2024-06-19 08:51:58.000000000","message":"This still needs testing from my side","commit_id":"f719632ac94bb944c0ac9761f7c0df71200c7381"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"d487a4cc18970add350dccebd9e1d64e7a7d5b2b","unresolved":true,"context_lines":[{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"      changed_when: false"},{"line_number":8,"context_line":"      register: netns"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"83075009_4af1ca3b","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"updated":"2024-06-20 12:12:16.000000000","message":"there is a netns module, but only it\u0027s private interface seems to allow to call arbitrary ip netns subcommands:\n\nhttps://docs.ansible.com/ansible/latest/collections/community/general/ip_netns_module.html\n\nhttps://github.com/ansible-collections/community.general/blob/ecb68aa5d273e92744542f5982b5014b13484139/plugins/modules/ip_netns.py#L68","commit_id":"d820135d6eca2705fdaf40fe914e895031bb3b9f"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"add28cdcdc788819af2209d6ab59ac324076091f","unresolved":true,"context_lines":[{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"      changed_when: false"},{"line_number":8,"context_line":"      register: netns"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5261871a_c5e84c9a","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"in_reply_to":"83075009_4af1ca3b","updated":"2024-06-21 06:59:34.000000000","message":"Yeah, it works nice for removing namespaces, but unless we want to contribute to the project, I can\u0027t see a better way.","commit_id":"d820135d6eca2705fdaf40fe914e895031bb3b9f"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"3ab474b51173dcc598c00a53b60fd2a850727093","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# Spawning the neutron agents containers leaves artifacts on the host."},{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"      changed_when: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"d517526e_bf2c3a97","line":4,"updated":"2025-07-16 07:13:46.000000000","message":"I\u0027d say it\u0027s easier to run the neutron-l3-agent container and run neutron-nets-cleanup script?","commit_id":"d6eab949efc3d4a9c5e1cfd253ea015a281164e9"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"27371f316abcce7d1a755b1a0578c186efcd0190","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# Spawning the neutron agents containers leaves artifacts on the host."},{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    - name: Get network namespaces"},{"line_number":6,"context_line":"      shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"      changed_when: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"30a4b076_36a79d78","line":4,"in_reply_to":"d517526e_bf2c3a97","updated":"2025-08-15 06:51:51.000000000","message":"Thank you for the tip. That does make it way easier.","commit_id":"d6eab949efc3d4a9c5e1cfd253ea015a281164e9"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"2eb299d50f01d72fc717b211f40ae12144a706af","unresolved":true,"context_lines":[{"line_number":2,"context_line":"# Spawning the neutron agents containers leaves artifacts on the host."},{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    # - name: Get network namespaces"},{"line_number":6,"context_line":"    #   shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"    #   changed_when: false"},{"line_number":8,"context_line":"    #   register: netns"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    # - name: Remove network namespaces"},{"line_number":11,"context_line":"    #   ip_netns:"},{"line_number":12,"context_line":"    #     name: \"{{ item }}\""},{"line_number":13,"context_line":"    #     state: absent"},{"line_number":14,"context_line":"    #   loop: \"{{ netns.stdout_lines }}\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    - name: Remove tap interfaces"},{"line_number":17,"context_line":"      command: ip link delete \"{{ item }}\" type veth"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"ff4eb6a5_76844a0d","line":14,"range":{"start_line":5,"start_character":4,"end_line":14,"end_character":40},"updated":"2025-08-27 13:26:37.000000000","message":"do we really need this commented? shouldn\u0027t be removed?","commit_id":"c5a56269b00159529b307a979b34c01399251a43"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"a2a296fd7d2a8a5ca6f3c43780523a47d442d77d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# Spawning the neutron agents containers leaves artifacts on the host."},{"line_number":3,"context_line":"# This removes them"},{"line_number":4,"context_line":"- block:"},{"line_number":5,"context_line":"    # - name: Get network namespaces"},{"line_number":6,"context_line":"    #   shell: ip netns list | awk \u0027{ print $1 }\u0027"},{"line_number":7,"context_line":"    #   changed_when: false"},{"line_number":8,"context_line":"    #   register: netns"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    # - name: Remove network namespaces"},{"line_number":11,"context_line":"    #   ip_netns:"},{"line_number":12,"context_line":"    #     name: \"{{ item }}\""},{"line_number":13,"context_line":"    #     state: absent"},{"line_number":14,"context_line":"    #   loop: \"{{ netns.stdout_lines }}\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    - name: Remove tap interfaces"},{"line_number":17,"context_line":"      command: ip link delete \"{{ item }}\" type veth"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"111e9caf_1b413325","line":14,"range":{"start_line":5,"start_character":4,"end_line":14,"end_character":40},"in_reply_to":"ff4eb6a5_76844a0d","updated":"2025-09-10 08:05:18.000000000","message":"Sorry, that was just a leftover.","commit_id":"c5a56269b00159529b307a979b34c01399251a43"}],"ansible/site.yml":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"7ec42ae7f4359a31fa53b9bfc3edf8a359354457","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"afc05103_a28e711f","line":1088,"range":{"start_line":1072,"start_character":0,"end_line":1088,"end_character":0},"updated":"2025-02-26 11:17:02.000000000","message":"shouldn\u0027t this be moved to a separate play?","commit_id":"f1ebab447eb24da72f2c436b521c70e5fc33930d"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"adf7fd84122f3c96be94868416be2e64824bc614","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b1c1ec3d_48568736","line":1088,"range":{"start_line":1072,"start_character":0,"end_line":1088,"end_character":0},"in_reply_to":"afc05103_a28e711f","updated":"2025-02-26 18:48:22.000000000","message":"I dont think it is necessarily needed. I wanted to make the amount of new code as low as possible. Current strategy uses this playbook to execute `destroy.yml` task of each role which collects the containers, images and volumes from each role/service and then at the end this special role is called which performs the tasks of removing the resources and cleaning up.","commit_id":"f1ebab447eb24da72f2c436b521c70e5fc33930d"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"0f00123394d937c6ef49508334cd2d93c066f7c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3143f6d4_764a9f7d","line":1088,"range":{"start_line":1072,"start_character":0,"end_line":1088,"end_character":0},"in_reply_to":"b1c1ec3d_48568736","updated":"2025-02-26 18:56:13.000000000","message":"It\u0027s OK, thanks.","commit_id":"f1ebab447eb24da72f2c436b521c70e5fc33930d"}]}
