)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"2aba0a747008ce2144661c644ad8767516af2340","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a812bad6_d3ae7c7d","updated":"2022-05-01 19:04:34.000000000","message":"need some modifications for RedHat variants","commit_id":"c24a57e5937085fe5579cadd4953af298c1eaa67"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"b5b4835379994f08a3384a0148696875995dc377","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"110584d6_a14f6bdc","updated":"2022-05-01 17:05:49.000000000","message":"recheck\n","commit_id":"c24a57e5937085fe5579cadd4953af298c1eaa67"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"ff9e45acbbde23a14c9793afd7d6d286ee6c2874","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"28361281_14c68f39","updated":"2022-05-02 08:09:47.000000000","message":"need to make it universal","commit_id":"5e351bd06fd138c213969a789a4446fa3a2542e6"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"5af0fdb51f3ade1e60177e5bfa0d092e296774aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"32ebcccb_63c9727e","updated":"2022-05-02 20:22:27.000000000","message":"reno todo","commit_id":"b4ade28509a39eb46e635f01f53f0a0d5137850d"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"a6daa825f0113866a9b5556012e69e852faeeddc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cee4d5ee_d5c6ac49","updated":"2022-05-03 14:16:44.000000000","message":"recheck\n","commit_id":"97ee797d981ddb274a38f75d096c04b315b9cdaa"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b124b226_50a3afe6","updated":"2023-01-27 22:41:27.000000000","message":"Ebbex, soory for delay in reply.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"7f6e5a309314d64f51a3bc23095968bb7820b9a3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"665d9712_9308a969","updated":"2023-01-05 14:45:40.000000000","message":"I\u0027m not quite sure I follow. How are these orphans getting here? The reno specifically mentions a case with ifcfg-interface.vlanid.\n\nIs this for situations where you reconfigure vlan-interface-ids on an already configured host?","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"af2dc22c605380c0c108f6f76207a8fb6792d09c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0bd447b0_80ea3898","updated":"2023-11-15 14:52:45.000000000","message":"In general, this patch looks useful. Did you have time to revisit?","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"196c663e_02e10234","updated":"2023-01-30 13:48:49.000000000","message":"Thanks for getting back to this, and sorry I don\u0027t have a better grasp of kayobe networking myself.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"67b0114b73d7a7753c6b485fd7abd3361c7e0496","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1a6d1871_d614e004","in_reply_to":"0bd447b0_80ea3898","updated":"2023-11-15 16:01:36.000000000","message":"I have time for this, and planed to test with latest michaelrigart interfaces role bumped in master. please give me some time.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"3ec258e9ad4e5b4779e3350bdbad14dc753626d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4c732232_95610e06","in_reply_to":"1a6d1871_d614e004","updated":"2026-04-11 11:16:21.000000000","message":"@will@stackhpc.com I have refreshed and tested this on a RedHat too. please merge.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1fd4baab9835d7ecfd8926053fa41475b8de327d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2dd1cf99_a9f47d7c","in_reply_to":"38c8b242_5ece3972","updated":"2023-04-15 21:20:58.000000000","message":"# networks.yml\nprovision_oc_net_name: \"pxe\"\npxe_cidr: \"192.168.22.0/24\"\npxe_allocation_pool_start: \"192.168.22.42\"\npxe_allocation_pool_end: \"192.168.22.46\"\npxe_inspection_allocation_pool_start: \"192.168.22.128\"\npxe_inspection_allocation_pool_end: \"192.168.22.195\"\npxe_inspection_gateway: \"192.168.22.1\"\nadmin_oc_net_name: \"management\"\noob_oc_net_name: \"management\"\noob_wl_net_name: \"management\"\nmanagement_cidr: \"192.168.33.0/24\"\nmanagement_allocation_pool_start: \"192.168.33.42\"\nmanagement_allocation_pool_end: \"192.168.33.46\"\nmanagement_inspection_allocation_pool_start: \"192.168.33.128\"\nmanagement_inspection_allocation_pool_end: \"192.168.33.195\"\nmanagement_vlan: \"11\"\n# inventory/group_vars/controllers/network-interfaces\nbond1_interface: \"bond1\"\nbond1_bond_mode: \"802.3ad\"\nbond1_bond_ad_select: \"bandwidth\"\nbond1_bond_miimon: \"1\"\nbond1_bond_updelay: \"0\"\nbond1_bond_downdelay: \"0\"\nbond1_bond_slaves: [\"ens2f0\",\"ens2f1\"]\nbond1_mtu: \"9000\"\nbond1.11_interface: \"bond1.11\"\nbond1.11_vlan: \"11\"\npxe_interface: \"brpxe\"\npxe_bridge_ports: [\u0027bond1\u0027]\npxe_mtu: \"9000\"\nmanagement_interface: \"brmgmt\"\nmanagement_bridge_ports: [\"bond1.11\"]\nmanagement_mtu: \"9000\"\n\nthese settings produces network_data.json for cloudinit by bifrost provision:\n{\n    \"links\": [\n        {\n            \"id\": \"vlan-0c:42:a1:f7:4a:c2\",\n            \"type\": \"vlan\",\n            \"vlan_id\": \"11\",\n            \"vlan_link\": \"0c:42:a1:f7:4a:c2\",\n            \"vlan_mac_address\": \"0c:42:a1:f7:4a:c2\"\n        },\n        {\n            \"ethernet_mac_address\": \"0c:42:a1:f7:4a:c2\",\n            \"id\": \"0c:42:a1:f7:4a:c2\",\n            \"mtu\": \"9000\",\n            \"type\": \"phy\"\n        }\n    ],\n    \"networks\": [\n        {\n            \"dns_nameservers\": [\n                \"8.8.8.8\",\n                \"8.8.4.4\"\n            ],\n            \"id\": \"ipv4-vlan-0c:42:a1:f7:4a:c2\",\n            \"ip_address\": \"192.168.33.42\",\n            \"link\": \"vlan-0c:42:a1:f7:4a:c2\",\n            \"netmask\": \"255.255.255.0\",\n            \"routes\": [\n                {\n                    \"gateway\": \"192.168.33.20\",\n                    \"netmask\": \"0.0.0.0\",\n                    \"network\": \"0.0.0.0\"\n                }\n            ],\n            \"type\": \"ipv4\"\n        }\n    ],\n    \"services\": [\n        {\n            \"address\": \"8.8.8.8\",\n            \"type\": \"dns\"\n        },\n        {\n            \"address\": \"8.8.4.4\",\n            \"type\": \"dns\"\n        }\n    ]\n}\n\nas a result we have this configured by cloudinit:\n\nroot@ctrl0:~# ip -4 r\ndefault via 192.168.33.20 dev ens2f0.11 proto static\n192.168.33.0/24 dev ens2f0.11 proto kernel scope link src 192.168.33.42\n\nroot@ctrl0:~# ip -4 a sh dev ens2f0.11\n8: ens2f0.11@ens2f0: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e mtu 9000 qdisc noqueue state UP group default qlen 1000\n    inet 192.168.33.42/24 brd 192.168.33.255 scope global ens2f0.11\n\nafter \u0027overcloud host configure\u0027 without my changes the system would have the correct bond1 interface, bond1.11 interface, bridge brmgmt with bond1.11 interface as a member and ip 192.168.33.42 configured as a duplicate for ens2f0.11 (which Kayobe didn\u0027t touch) and two defaults one via ens2f0.11 and second via brmgmt.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f02d0c12_26896194","in_reply_to":"665d9712_9308a969","updated":"2023-01-27 22:41:27.000000000","message":"this issue because of different ways to configure networking first in the Bifrost, later in the Kayobe. and yes, the simplest way to get orphans - use vlans for management network.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"38c8b242_5ece3972","in_reply_to":"f02d0c12_26896194","updated":"2023-01-30 13:48:49.000000000","message":"Do you have a repo with your kayobe-config, or could you give a small sample of how you\u0027re doing bifrost network config and kayobe network config?\n\n(I\u0027m not to familiar with kayobe networking possibilities, and would like to understand how the issue arises to begin with.)","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ef04d0ac2baa06dcb691b0ac80b2df5f83abb853","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"89dae509_d065f15f","updated":"2026-04-14 10:40:53.000000000","message":"I like the idea in principle but seems like it doesn\u0027t catch all orphans. We need to toggle this to on in the CI jobs.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"d450103f7624afb55e8822d4edda584c89fca493","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"e6bdfc3f_e60bee40","in_reply_to":"55b2d3ac_5d03f251","updated":"2026-04-16 12:32:10.000000000","message":"Yes, but it\u0027s better to say that it has been tested on systemd-networkd, NetworkManager and ifconfig-scripts (on CentOS 7/8 in the past).","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"43f895c36acca03883dbbdffa41191b8ae765450","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"e7951fc8_d6f48f5a","in_reply_to":"89dae509_d065f15f","updated":"2026-04-14 19:34:47.000000000","message":"Thanks, trust me, it does. Feel free to implement CI in the followup, I\u0027ll try to help You. I don\u0027t know how can you implement these tests because it will affect networking.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"905689f93c4e5db8dafc118a60ff12ca3c864999","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"c42896dc_c0b2e5be","in_reply_to":"a3a365cf_e6038ee2","updated":"2026-04-30 14:51:07.000000000","message":"Right. Could we please merge this as is and add tests as a followup? Thanks.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"d4feb9153aca9874dbcf93fbe375633848d02c11","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a3a365cf_e6038ee2","in_reply_to":"e6bdfc3f_e60bee40","updated":"2026-04-20 10:03:01.000000000","message":"For CI. The first step should just be enabled the flag. It should be an effective no-op, right? Then we can create a dummy interface with an IP and see if it removes it?","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"7a2b852ed2e04e5134da4a58c4c9480b6b630ebb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"55b2d3ac_5d03f251","in_reply_to":"e7951fc8_d6f48f5a","updated":"2026-04-16 11:53:30.000000000","message":"Did you test on Rocky and Ubuntu?","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"22d5186d076ae48ffb12d19a24138c032d0c4d97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"9568f0f8_379e38ba","updated":"2026-04-17 08:25:24.000000000","message":"@will@stackhpc.com if there are no other questions, please merge it","commit_id":"a197e2f5700853d71ee852f4295d6379cba95ec3"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"fbb8237b9386c02ca4d121c77415834ef773e671","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"cac3f73a_d5ab828a","updated":"2026-04-30 15:34:31.000000000","message":"I put a few suggestions in https://review.opendev.org/c/openstack/kayobe/+/986829/1. If you approve please combine that with yours.","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"21909ca1c0fd6dbf504b500edfcccaebd9ab3a09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"60c2771c_6b18f8b2","updated":"2026-04-30 16:41:31.000000000","message":"Started an alternative variant that tries to cleanup all orphans: https://review.opendev.org/c/openstack/kayobe/+/986836.","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"616f37401afb8be4d066fd02b47e4c1e7b50d42d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"223dc1b4_2918884a","in_reply_to":"cac3f73a_d5ab828a","updated":"2026-04-30 17:25:07.000000000","message":"Ok","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"}],"ansible/inventory/group_vars/all/network":[{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"af2dc22c605380c0c108f6f76207a8fb6792d09c","unresolved":true,"context_lines":[{"line_number":94,"context_line":"networkd_prefix: \"50-kayobe-\""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"798fde81_5f057ee3","line":97,"updated":"2023-11-15 14:52:45.000000000","message":"Needs to be added to etc/kayobe so that it sends up being copied into the kayobe-config repo","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"e0ad7043dc33f13fb8caf3ed396d7df8934f4e8d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"networkd_prefix: \"50-kayobe-\""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"0c81fe93_9ff69de4","line":97,"in_reply_to":"798fde81_5f057ee3","updated":"2023-11-15 15:58:57.000000000","message":"Ack","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"129e89f7833e52a7a6e0f1f3d8e1271ce0160fa4","unresolved":true,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"22b828e9_20a7cb87","line":105,"updated":"2026-04-13 10:41:58.000000000","message":"Do we need to consider the kayobe created patch links when using a bridge e.g:\n\n- p-brbond0-ovs\n- p-brbond0-phy\n\nOr was the first iteration proposing to add these manually? Potentially bond slaves too. I\u0027d be happy with adding them manually to begin with, but we probably need to document this. If we could use the standard _default, _extra suffixes, that would be great.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"176effc716179114d9c45a3acfac8e49995a2fa2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"5988bfb9_b1094a21","line":105,"in_reply_to":"22b828e9_20a7cb87","updated":"2026-04-13 10:54:11.000000000","message":"No, we don\u0027t need them. These interfaces don\u0027t have IP addresses assigned.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"4d30aaea47ff1688f18c14996c5595574945b753","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"5b0c2f95_53279033","line":105,"in_reply_to":"39d2c6f7_8065759d","updated":"2026-04-14 19:29:54.000000000","message":"There are no \"any scenarios\" here because cleaned only orphaned interfaces created via cloud-init during Bifrost provision.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ef04d0ac2baa06dcb691b0ac80b2df5f83abb853","unresolved":true,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"39d2c6f7_8065759d","line":105,"in_reply_to":"5988bfb9_b1094a21","updated":"2026-04-14 10:40:53.000000000","message":"Does it work for the following scenarios:\n\n- Changing linux bridge to regular bond. \n  - Would leave dangling patch links.\n- VLAN interface moving to bridge. \n  - I think it would catch this. But if this is your admin interface do we lose connectivity before the the new vlan interface is configured?\n- Interface that is configured with no_ip attribute that is then removed.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"f0b243659cc4ab53068d6a681bbfcaf5ea0ab9ee","unresolved":true,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"61924f74_ecefcbc2","line":105,"in_reply_to":"5b0c2f95_53279033","updated":"2026-04-15 08:46:00.000000000","message":"Those are the sort of problems I was imagining this feature fixing. We shouldn\u0027t be injecting the provisioning interface into the config drive if the network is not mapped to that host.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1a174a71e80596e8939531d2f36aafeddc28f049","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"c703927c_2a44d727","line":105,"in_reply_to":"61924f74_ecefcbc2","updated":"2026-04-15 10:34:25.000000000","message":"We will fix them when needed. For now, there is no problem, since orphan_interfaces_cleanup is false by default.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"879a1e39d55e572c4c21b9d868ecdae55a974605","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."},{"line_number":103,"context_line":"# This list should contain the interfaces with any IP addresses configured"},{"line_number":104,"context_line":"# externaly and not reconfigured by Kayobe."},{"line_number":105,"context_line":"orphan_interfaces_exclude: [\"lo\", \"docker0\", \"virbr0\"]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"c433856d_3918a230","line":105,"in_reply_to":"c703927c_2a44d727","updated":"2026-04-16 11:50:56.000000000","message":"I think that is fair. There is no reason why we can\u0027t improve the feature later.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"879a1e39d55e572c4c21b9d868ecdae55a974605","unresolved":true,"context_lines":[{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."}],"source_content_type":"application/octet-stream","patch_set":21,"id":"87479c1f_5cb2e0fd","line":99,"updated":"2026-04-16 11:50:56.000000000","message":"Could we mention that this currently only cleans up interfaces with IP addresses configured. It is suggested in the releasenote and in the comment below but I feel it would be helpful to call it out here. I made the mistake of assuming it would clean up any interfaces that were previously configured and then removed from the config, so I\u0027m sure others will too.","commit_id":"a197e2f5700853d71ee852f4295d6379cba95ec3"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"905689f93c4e5db8dafc118a60ff12ca3c864999","unresolved":false,"context_lines":[{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."}],"source_content_type":"application/octet-stream","patch_set":21,"id":"0db0095d_dc33ffea","line":99,"in_reply_to":"6c3ea424_e9326b4c","updated":"2026-04-30 14:51:07.000000000","message":"Done","commit_id":"a197e2f5700853d71ee852f4295d6379cba95ec3"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"d4feb9153aca9874dbcf93fbe375633848d02c11","unresolved":true,"context_lines":[{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."}],"source_content_type":"application/octet-stream","patch_set":21,"id":"6c3ea424_e9326b4c","line":99,"in_reply_to":"86840375_5820f8fb","updated":"2026-04-20 10:03:01.000000000","message":"I\u0027d still like what we are considering an orphan to be clearly defined here. Then we can expand that definition later.\n\nThat said, I don\u0027t think it would be too hard to clean up interfaces that were templated by kayobe in a previous run and this would be my preferred option.","commit_id":"a197e2f5700853d71ee852f4295d6379cba95ec3"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"d450103f7624afb55e8822d4edda584c89fca493","unresolved":false,"context_lines":[{"line_number":96,"context_line":"###############################################################################"},{"line_number":97,"context_line":"# Cleanup orphan interfaces."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# By default no need to cleanup orphan interfaces"},{"line_number":100,"context_line":"orphan_interfaces_cleanup: false"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# The default list of the interfaces to exclude from cleanup."}],"source_content_type":"application/octet-stream","patch_set":21,"id":"86840375_5820f8fb","line":99,"in_reply_to":"87479c1f_5cb2e0fd","updated":"2026-04-16 12:32:10.000000000","message":"I think no, because your assumption is that we clean up orphans created by the Kayobe, but in fact, we clean up orphaned interfaces created during the provision.","commit_id":"a197e2f5700853d71ee852f4295d6379cba95ec3"}],"ansible/network.yml":[{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"7f6e5a309314d64f51a3bc23095968bb7820b9a3","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        - name: Collect interfaces from system"},{"line_number":41,"context_line":"          set_fact:"},{"line_number":42,"context_line":"            interfaces_system: \"{{ (interfaces_system | default({})) | combine({item.device: (item.ipv4.address ~ \u0027/\u0027 ~ item.ipv4.netmask) | ipaddr(\u0027host\u0027)}) }}\""},{"line_number":43,"context_line":"          loop: \"{{ ansible_facts | dict2items | selectattr(\u0027value.ipv4.address\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027value\u0027) }}\""},{"line_number":44,"context_line":"          when: item.device not in orphan_interfaces_exclude"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        - name: Collect interfaces from configuration (RedHat)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"4eb660e8_c2b497b0","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":121},"updated":"2023-01-05 14:45:40.000000000","message":"at first glance, this doesn\u0027t give a clear idea what\u0027s being looped over.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        - name: Collect interfaces from system"},{"line_number":41,"context_line":"          set_fact:"},{"line_number":42,"context_line":"            interfaces_system: \"{{ (interfaces_system | default({})) | combine({item.device: (item.ipv4.address ~ \u0027/\u0027 ~ item.ipv4.netmask) | ipaddr(\u0027host\u0027)}) }}\""},{"line_number":43,"context_line":"          loop: \"{{ ansible_facts | dict2items | selectattr(\u0027value.ipv4.address\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027value\u0027) }}\""},{"line_number":44,"context_line":"          when: item.device not in orphan_interfaces_exclude"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        - name: Collect interfaces from configuration (RedHat)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"a7bcc805_b8ccdb1c","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":121},"in_reply_to":"4eb660e8_c2b497b0","updated":"2023-01-27 22:41:27.000000000","message":"this loops over all the active interfaces in the system with ipv4 address set.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1fd4baab9835d7ecfd8926053fa41475b8de327d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        - name: Collect interfaces from system"},{"line_number":41,"context_line":"          set_fact:"},{"line_number":42,"context_line":"            interfaces_system: \"{{ (interfaces_system | default({})) | combine({item.device: (item.ipv4.address ~ \u0027/\u0027 ~ item.ipv4.netmask) | ipaddr(\u0027host\u0027)}) }}\""},{"line_number":43,"context_line":"          loop: \"{{ ansible_facts | dict2items | selectattr(\u0027value.ipv4.address\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027value\u0027) }}\""},{"line_number":44,"context_line":"          when: item.device not in orphan_interfaces_exclude"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        - name: Collect interfaces from configuration (RedHat)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7aa93a0c_dbf808dd","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":121},"in_reply_to":"51a36f7b_12e03385","updated":"2023-04-15 21:20:58.000000000","message":"these optimisations didn\u0027t bring any value. my lookup ignores any \u0027possible iscsi block devices\u0027, it filter out only active ipv4 interface names, not the ip of them.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        - name: Collect interfaces from system"},{"line_number":41,"context_line":"          set_fact:"},{"line_number":42,"context_line":"            interfaces_system: \"{{ (interfaces_system | default({})) | combine({item.device: (item.ipv4.address ~ \u0027/\u0027 ~ item.ipv4.netmask) | ipaddr(\u0027host\u0027)}) }}\""},{"line_number":43,"context_line":"          loop: \"{{ ansible_facts | dict2items | selectattr(\u0027value.ipv4.address\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027value\u0027) }}\""},{"line_number":44,"context_line":"          when: item.device not in orphan_interfaces_exclude"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        - name: Collect interfaces from configuration (RedHat)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"51a36f7b_12e03385","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":121},"in_reply_to":"a7bcc805_b8ccdb1c","updated":"2023-01-30 13:48:49.000000000","message":"I figured as much. What I mean is that when you look at the statement, it\u0027s not clear enough what it\u0027s doing. You\u0027re taking ALL of `ansible_facts`, flattening it with `dict2items` and picking out whatever datastructure has `value.ipv4.address`, possibly including iscsi block devices. It would be better if there were rewritten with some \"precision\" to the query, to make it clearer what you\u0027re specifically looking for.\n\nSomething like;\n\n loop: \"{{ interfaces_with_ipv4_address }}\"\n vars:\n   # renaming br-whatever to br_whatever to find them in the ansible_facts\n   interface_facts: \"{{ ansible_facts.interfaces | map(\u0027regex_replace\u0027, \u0027-\u0027, \u0027_\u0027) | map(\u0027extract\u0027, ansible_facts) }}\"\n   interfaces_with_ipv4_address: \"{{ interface_facts | selectattr(\u0027ipv4.address\u0027, \u0027defined\u0027) }}\"","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"7f6e5a309314d64f51a3bc23095968bb7820b9a3","unresolved":true,"context_lines":[{"line_number":49,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":50,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"      rescue:"},{"line_number":53,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":54,"context_line":"          set_fact:"},{"line_number":55,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bfa684c5_c8c45e65","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":12},"updated":"2023-01-05 14:45:40.000000000","message":"`rescue` just feels wrong. Better to have when clause to each for os_family, or better yet move them into network-{{ os_family }} that\u0027s happening the line below.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":true,"context_lines":[{"line_number":49,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":50,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"      rescue:"},{"line_number":53,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":54,"context_line":"          set_fact:"},{"line_number":55,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"8c30876b_33d8e707","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":12},"in_reply_to":"13f07a10_c7cbb497","updated":"2023-01-30 13:48:49.000000000","message":"It\u0027s a bit concering seeing failed tasks in the output. What should happen if there\u0027s some mis-configuration leading to the task actually failing on RedHat systems, and it tries the rescue section for this other platform?\n\nYou could probably still resolve this into a single task with a lookup to a vars section.\n\n vars:\n   some_lookup_for_os_family:\n     Debian:\n       key: item.value[0].Match.blabla.Name\n       value: item.value[1].blabla.Address\n     RedHat:\n       key: item.device\n       value: item.address ~ item.netmask\n\nBut the `| dict2items` and looking at `value[0]` or `value[1]` is a bit of a mess, and would be better rewritten some other way.\n\nIs the structure in `network_interfaces` that different between redhat and debian systems?","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1fd4baab9835d7ecfd8926053fa41475b8de327d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":50,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"      rescue:"},{"line_number":53,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":54,"context_line":"          set_fact:"},{"line_number":55,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f01fe9d_676adf22","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":12},"in_reply_to":"8c30876b_33d8e707","updated":"2023-04-15 21:20:58.000000000","message":"this will not produce the failed hosts in recap.\nand yes, this mess only because the structure different between redhat and debian systems.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[{"line_number":49,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":50,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"      rescue:"},{"line_number":53,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":54,"context_line":"          set_fact:"},{"line_number":55,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"13f07a10_c7cbb497","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":12},"in_reply_to":"bfa684c5_c8c45e65","updated":"2023-01-27 22:41:27.000000000","message":"don\u0027t agree, we have only two family, so this code is more clean and compact in comparison to the method you propose. each task have the correct name and executed in the correct way. please read the official article how to handle errors in the blocks: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_blocks.html#handling-errors-with-blocks","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ef04d0ac2baa06dcb691b0ac80b2df5f83abb853","unresolved":true,"context_lines":[{"line_number":54,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":55,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      rescue:"},{"line_number":58,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":59,"context_line":"          set_fact:"},{"line_number":60,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a7513da_f92a659c","line":57,"updated":"2026-04-14 10:40:53.000000000","message":"Using rescue is a bit weird. Why aren\u0027t we using ansible_facts.os_family?","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"f0b243659cc4ab53068d6a681bbfcaf5ea0ab9ee","unresolved":true,"context_lines":[{"line_number":54,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":55,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      rescue:"},{"line_number":58,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":59,"context_line":"          set_fact:"},{"line_number":60,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"adc0a3b2_d811ffaf","line":57,"in_reply_to":"0c45d997_5580289f","updated":"2026-04-15 08:46:00.000000000","message":"I disagree, its not the right mechanism for control flow when you could use a simple when. This will show up as failed tasks in the summary.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"2cb1f1c8b0e935ca0348ecc62873cb9d851cc4b4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":55,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      rescue:"},{"line_number":58,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":59,"context_line":"          set_fact:"},{"line_number":60,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"0d3e7ba2_2029eda1","line":57,"in_reply_to":"2e17f250_5ba7d48e","updated":"2026-04-16 11:13:31.000000000","message":"@will@stackhpc.com Done.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"4d30aaea47ff1688f18c14996c5595574945b753","unresolved":false,"context_lines":[{"line_number":54,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":55,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      rescue:"},{"line_number":58,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":59,"context_line":"          set_fact:"},{"line_number":60,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"0c45d997_5580289f","line":57,"in_reply_to":"5a7513da_f92a659c","updated":"2026-04-14 19:29:54.000000000","message":"It\u0027s not weird. It\u0027s described in the official Ansible documentation, and it works well from the Xena cycle.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1a174a71e80596e8939531d2f36aafeddc28f049","unresolved":false,"context_lines":[{"line_number":54,"context_line":"          loop: \"{{ network_interfaces | map(\u0027net_interface_obj\u0027) }}\""},{"line_number":55,"context_line":"          when: item.address !\u003d \u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      rescue:"},{"line_number":58,"context_line":"        - name: Collect interfaces from configuration (Ubuntu)"},{"line_number":59,"context_line":"          set_fact:"},{"line_number":60,"context_line":"            interfaces_config: \"{{ (interfaces_config | default({})) | combine({item.value[0].Match[0].Name: item.value[1].Network[0].Address}) }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2e17f250_5ba7d48e","line":57,"in_reply_to":"adc0a3b2_d811ffaf","updated":"2026-04-15 10:34:25.000000000","message":"IMHO, this is not really a problem, since the play is not failing, but OK, I will re-write this part of the code to a boring if-else code instead of nice solution.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"f4b00a81772687c77e45dd2629ea663d66a4f8ff","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        - name: Collect interfaces to cleanup"},{"line_number":68,"context_line":"          set_fact:"},{"line_number":69,"context_line":"            interfaces_cleanup: \"{{ interfaces_system.keys() | difference(interfaces_config.keys()) }}\""},{"line_number":70,"context_line":"      when: orphan_interfaces_cleanup | bool"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    - name: Configure the network"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"a6a78833_e3ceeec8","line":69,"updated":"2026-04-30 16:03:14.000000000","message":"Seems like the variable assignments could be simplified if we just use a list when construction interfaces_system and interfaces_config. At the moment it stores device to ipaddress mappings, but the ips are never looked up from these data structures anywhere.","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"b4c74042090b59554ebbfdd4149a46c9203cd754","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        - name: Collect interfaces to cleanup"},{"line_number":68,"context_line":"          set_fact:"},{"line_number":69,"context_line":"            interfaces_cleanup: \"{{ interfaces_system.keys() | difference(interfaces_config.keys()) }}\""},{"line_number":70,"context_line":"      when: orphan_interfaces_cleanup | bool"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    - name: Configure the network"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"c90a9f60_594e5fca","line":69,"in_reply_to":"a6a78833_e3ceeec8","updated":"2026-04-30 16:17:57.000000000","message":"This isn\u0027t true. It does use it when deleting the IP later on, although only after trying to delete the interface.","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"616f37401afb8be4d066fd02b47e4c1e7b50d42d","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        - name: Collect interfaces to cleanup"},{"line_number":68,"context_line":"          set_fact:"},{"line_number":69,"context_line":"            interfaces_cleanup: \"{{ interfaces_system.keys() | difference(interfaces_config.keys()) }}\""},{"line_number":70,"context_line":"      when: orphan_interfaces_cleanup | bool"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    - name: Configure the network"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"c2f05387_24b2e742","line":69,"in_reply_to":"c90a9f60_594e5fca","updated":"2026-04-30 17:25:07.000000000","message":"it\u0027s true. both variables is a dictionary like:\n\"ansible_facts\": {\n  \"interaces_system\": {\n     \"interface1\": \"192.168.1.2/24\",\n     \"interface2\": \"172.17.1.2/24\"\n  }\n}","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"}],"ansible/roles/network-debian/tasks/main.yml":[{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"7f6e5a309314d64f51a3bc23095968bb7820b9a3","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    # this play."},{"line_number":51,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":52,"context_line":"      shell: |"},{"line_number":53,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":54,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":55,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":56,"context_line":"      async: 1"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ce3c62e1_7de0f6dc","line":53,"updated":"2023-01-05 14:45:40.000000000","message":"restarting the service for every interface in interfaces_cleanup? Can\u0027t this all be handled in one swoop?","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    # this play."},{"line_number":51,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":52,"context_line":"      shell: |"},{"line_number":53,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":54,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":55,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":56,"context_line":"      async: 1"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f28ef4e7_914b3eb9","line":53,"in_reply_to":"45be77f2_c0b82b92","updated":"2023-01-30 13:48:49.000000000","message":"- shell: |\n     systemctl restart systemd-networkd.service\n     {% for item in interfaces_cleanup %}\n     ip link delete {{ item }} || ip address delete ...\n     {% endfor %}\n   async: true\n\nWe\u0027re restarting only once, and deleting all interfaces after the fact.\n\nCool if async solves disconnection issues, ansible-role-interfaces uses nohup on the script, https://github.com/michaelrigart/ansible-role-interfaces/blob/master/handlers/main.yml#L112-L126","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    # this play."},{"line_number":51,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":52,"context_line":"      shell: |"},{"line_number":53,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":54,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":55,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":56,"context_line":"      async: 1"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"45be77f2_c0b82b92","line":53,"in_reply_to":"ce3c62e1_7de0f6dc","updated":"2023-01-27 22:41:27.000000000","message":"\u0027every interface\u0027 as You mention in this case is only orphan interfaces because this is list. in most cases it is only one management interface (so async is used because Ansible itself uses management network for ssh).","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"1fd4baab9835d7ecfd8926053fa41475b8de327d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    # this play."},{"line_number":51,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":52,"context_line":"      shell: |"},{"line_number":53,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":54,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":55,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":56,"context_line":"      async: 1"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"84da717e_34514e73","line":53,"in_reply_to":"f28ef4e7_914b3eb9","updated":"2023-04-15 21:20:58.000000000","message":"nohup is a bad idea, in case when we reconfigure the management network this will kill the active connection when ansible didn\u0027t finish their remote work and lead to the ansible freeze and/or failures. for this case the management network shouldn\u0027t be reconfigured together with other in one fire and forgot.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ef04d0ac2baa06dcb691b0ac80b2df5f83abb853","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    # asynchronously. Also we need to restart systemd-networkd service together"},{"line_number":57,"context_line":"    # with cleanup in one task even if service restart is postponed to the end of"},{"line_number":58,"context_line":"    # this play."},{"line_number":59,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":60,"context_line":"      shell: |"},{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"b7302a21_94d421d0","line":59,"updated":"2026-04-14 10:40:53.000000000","message":"I don\u0027t really understand the use of async. Can you explain? Are you moving the IP onto a different vlan? We always use a different cidr for the admin network so I can\u0027t see any issues with removing the IP and config of an interface ansible is not using to connect.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ef04d0ac2baa06dcb691b0ac80b2df5f83abb853","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    # asynchronously. Also we need to restart systemd-networkd service together"},{"line_number":57,"context_line":"    # with cleanup in one task even if service restart is postponed to the end of"},{"line_number":58,"context_line":"    # this play."},{"line_number":59,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":60,"context_line":"      shell: |"},{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"418e902f_5b9f4281","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":27},"updated":"2026-04-14 10:40:53.000000000","message":"```suggestion\n    - name: Cleanup orphan system interfaces asynchronously\n```","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"4d30aaea47ff1688f18c14996c5595574945b753","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # asynchronously. Also we need to restart systemd-networkd service together"},{"line_number":57,"context_line":"    # with cleanup in one task even if service restart is postponed to the end of"},{"line_number":58,"context_line":"    # this play."},{"line_number":59,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":60,"context_line":"      shell: |"},{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2595fcac_c6b7c257","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":27},"in_reply_to":"418e902f_5b9f4281","updated":"2026-04-14 19:29:54.000000000","message":"Fix applied.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"4d30aaea47ff1688f18c14996c5595574945b753","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # asynchronously. Also we need to restart systemd-networkd service together"},{"line_number":57,"context_line":"    # with cleanup in one task even if service restart is postponed to the end of"},{"line_number":58,"context_line":"    # this play."},{"line_number":59,"context_line":"    - name: Cleanup oprphan system interfaces asynchronously"},{"line_number":60,"context_line":"      shell: |"},{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"e1a4e101_144913a9","line":59,"in_reply_to":"b7302a21_94d421d0","updated":"2026-04-14 19:29:54.000000000","message":"Async needs to correct Ansible if the management interface changes, because Ansible uses SSH and it will hang while waiting for a reply from the remote host.","commit_id":"22998e5ca359c184768cf304472f53097cd94ccb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"f4b00a81772687c77e45dd2629ea663d66a4f8ff","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":63,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":64,"context_line":"      async: 1"},{"line_number":65,"context_line":"      poll: 0"},{"line_number":66,"context_line":"      register: cleanup_interfaces_async"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":24,"id":"ea5e54de_fa83b6f8","line":64,"updated":"2026-04-30 16:03:14.000000000","message":"I\u0027m still not convinced async is necessary considering we restarting networkd in other non async tasks","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"616f37401afb8be4d066fd02b47e4c1e7b50d42d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        systemctl restart systemd-networkd.service || true"},{"line_number":62,"context_line":"        ip link delete {{ item }} || ip address delete {{ interfaces_system[item] }} dev {{ item }} || true"},{"line_number":63,"context_line":"      loop: \"{{ interfaces_cleanup }}\""},{"line_number":64,"context_line":"      async: 1"},{"line_number":65,"context_line":"      poll: 0"},{"line_number":66,"context_line":"      register: cleanup_interfaces_async"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":24,"id":"74a9e11b_1e1406f4","line":64,"in_reply_to":"ea5e54de_fa83b6f8","updated":"2026-04-30 17:25:07.000000000","message":"It is necessary if one of the orphaned is the management interface used in an Ansible SSH session. And this is the almost main case.","commit_id":"52c2e0780c32b492e71bba6b377fab9db2a11887"}],"ansible/roles/network-redhat/tasks/main.yml":[{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"7f6e5a309314d64f51a3bc23095968bb7820b9a3","unresolved":true,"context_lines":[{"line_number":16,"context_line":"  when: resolv_is_managed | bool"},{"line_number":17,"context_line":"  become: True"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Remove orphan network-scripts configuration if exists"},{"line_number":20,"context_line":"  become: true"},{"line_number":21,"context_line":"  file:"},{"line_number":22,"context_line":"    path: \"/etc/sysconfig/network-scripts/ifcfg-{{ item }}\""},{"line_number":23,"context_line":"    state: absent"},{"line_number":24,"context_line":"  loop: \"{{ interfaces_cleanup }}\""},{"line_number":25,"context_line":"  when: interfaces_cleanup | default([]) | length \u003e 0"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- name: Configure network interfaces (RedHat)"},{"line_number":28,"context_line":"  import_role:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7685ca4b_f285f1a7","line":25,"range":{"start_line":19,"start_character":0,"end_line":25,"end_character":53},"updated":"2023-01-05 14:45:40.000000000","message":"I think there\u0027s something similar being done in ansible-role-interfaces, `interfaces_workaround_centos_remove` How is this different?","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"06af4f45590b76a64c88797ec46efcf612699c72","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  when: resolv_is_managed | bool"},{"line_number":17,"context_line":"  become: True"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Remove orphan network-scripts configuration if exists"},{"line_number":20,"context_line":"  become: true"},{"line_number":21,"context_line":"  file:"},{"line_number":22,"context_line":"    path: \"/etc/sysconfig/network-scripts/ifcfg-{{ item }}\""},{"line_number":23,"context_line":"    state: absent"},{"line_number":24,"context_line":"  loop: \"{{ interfaces_cleanup }}\""},{"line_number":25,"context_line":"  when: interfaces_cleanup | default([]) | length \u003e 0"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- name: Configure network interfaces (RedHat)"},{"line_number":28,"context_line":"  import_role:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f9f10b5b_b89f1b99","line":25,"range":{"start_line":19,"start_character":0,"end_line":25,"end_character":53},"in_reply_to":"7685ca4b_f285f1a7","updated":"2023-01-27 22:41:27.000000000","message":"not the same, it can be reused, with some changes, but leads to some problems. please feel free to look the previous solution in the Ansible Galaxy role merged and reverted in the Ussuri cycle: https://github.com/michaelrigart/ansible-role-interfaces/pull/118","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"e0ad7043dc33f13fb8caf3ed396d7df8934f4e8d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  when: resolv_is_managed | bool"},{"line_number":17,"context_line":"  become: True"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Remove orphan network-scripts configuration if exists"},{"line_number":20,"context_line":"  become: true"},{"line_number":21,"context_line":"  file:"},{"line_number":22,"context_line":"    path: \"/etc/sysconfig/network-scripts/ifcfg-{{ item }}\""},{"line_number":23,"context_line":"    state: absent"},{"line_number":24,"context_line":"  loop: \"{{ interfaces_cleanup }}\""},{"line_number":25,"context_line":"  when: interfaces_cleanup | default([]) | length \u003e 0"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- name: Configure network interfaces (RedHat)"},{"line_number":28,"context_line":"  import_role:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f98e369a_61b4523e","line":25,"range":{"start_line":19,"start_character":0,"end_line":25,"end_character":53},"in_reply_to":"9a29a255_044da202","updated":"2023-11-15 15:58:57.000000000","message":"there is no problem, it solves different problem. it static, there is need to know the interface name before the run, and also it for centos only.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"af2dc22c605380c0c108f6f76207a8fb6792d09c","unresolved":true,"context_lines":[{"line_number":16,"context_line":"  when: resolv_is_managed | bool"},{"line_number":17,"context_line":"  become: True"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Remove orphan network-scripts configuration if exists"},{"line_number":20,"context_line":"  become: true"},{"line_number":21,"context_line":"  file:"},{"line_number":22,"context_line":"    path: \"/etc/sysconfig/network-scripts/ifcfg-{{ item }}\""},{"line_number":23,"context_line":"    state: absent"},{"line_number":24,"context_line":"  loop: \"{{ interfaces_cleanup }}\""},{"line_number":25,"context_line":"  when: interfaces_cleanup | default([]) | length \u003e 0"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- name: Configure network interfaces (RedHat)"},{"line_number":28,"context_line":"  import_role:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9a29a255_044da202","line":25,"range":{"start_line":19,"start_character":0,"end_line":25,"end_character":53},"in_reply_to":"bb4d9a48_07f3ec96","updated":"2023-11-15 14:52:45.000000000","message":"Could you explain what problems interfaces_workaround_centos_remove creates? That seems like a cleaner way to achieve this, but I must have missed something.","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"},{"author":{"_account_id":25600,"name":"Ebbex","display_name":"ebbex","email":"openstack@slipsprogrammor.no","username":"ebbex"},"change_message_id":"11f780df6651e7872693e32318cf8a3af486e96d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  when: resolv_is_managed | bool"},{"line_number":17,"context_line":"  become: True"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Remove orphan network-scripts configuration if exists"},{"line_number":20,"context_line":"  become: true"},{"line_number":21,"context_line":"  file:"},{"line_number":22,"context_line":"    path: \"/etc/sysconfig/network-scripts/ifcfg-{{ item }}\""},{"line_number":23,"context_line":"    state: absent"},{"line_number":24,"context_line":"  loop: \"{{ interfaces_cleanup }}\""},{"line_number":25,"context_line":"  when: interfaces_cleanup | default([]) | length \u003e 0"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- name: Configure network interfaces (RedHat)"},{"line_number":28,"context_line":"  import_role:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bb4d9a48_07f3ec96","line":25,"range":{"start_line":19,"start_character":0,"end_line":25,"end_character":53},"in_reply_to":"f9f10b5b_b89f1b99","updated":"2023-01-30 13:48:49.000000000","message":"While this works for now, there\u0027s the possibility that the default store for network-scripts ends up under /etc/NetworkManager/system-connections when the transition to EL9/NetworkManager takes full effect.\n\nI was gonna point out that this is somehow much shorter than what\u0027s happening for debian, but I see debian-path is not using the ansible-role-interfaces, which was a little disheartening for me, so I don\u0027t know ¯\\_(ツ)_/¯","commit_id":"a12d4e0725b9c1f631e71cd18a55d53776e641c0"}]}
