)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f5f0deff72d1688e7cf2450533f12b8232848b4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"130036fe_a99bc13b","updated":"2021-12-21 12:06:59.000000000","message":"I understand the requirement for this, but how about implementing it as a network attribute? i.e. for a network called mynet you would set a variable called mynet_no_ip: true. Then we could skip the task in ansible/ip-allocation.yml when this is set.\n\nA benefit of that approach is that you could set the variable as a group_var, rather than per-host. It\u0027s also not very friendly to edit network-allocations.yml.","commit_id":"332473cec7c56cbf9ac126e88cb1d05f3eab293d"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"9c718db875e46583b491416896a9d0eee203834b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4de61558_8164f3e5","in_reply_to":"130036fe_a99bc13b","updated":"2021-12-22 11:35:07.000000000","message":"Good proposal, but my change skip the partial IPs, some IPs for other hosts still needed.\nYour idea, I think, should be realised as a new change. For now we already use this patch in production.","commit_id":"332473cec7c56cbf9ac126e88cb1d05f3eab293d"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"5df0c9bb107f3754f1a92b40520fe4fae45c230b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a1b77004_5e81534d","in_reply_to":"4de61558_8164f3e5","updated":"2021-12-22 11:51:55.000000000","message":"A problem with this patch is that it would allow invalid IP addresses to exist in network-allocations.yml","commit_id":"332473cec7c56cbf9ac126e88cb1d05f3eab293d"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"a82ac3fdb6f544941a3d90bcc0e110f371bde793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c2aa13e1_8dd8a697","in_reply_to":"a1b77004_5e81534d","updated":"2021-12-22 12:17:05.000000000","message":"no problem, we can add the additional variable to switch the defaults and enable - this will protect","commit_id":"332473cec7c56cbf9ac126e88cb1d05f3eab293d"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"795e9c169e5afcb72e3f167340edde2cdf2beed3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fba454a0_046bb613","updated":"2022-03-17 09:46:46.000000000","message":"Thanks for adding a test.","commit_id":"a46962b7977423abf43f474034e48da7897637bb"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"61f25b2c5125c73acc4242ea4ca8c0600ae46ae4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b3e915f3_bad95c56","updated":"2022-03-17 12:11:43.000000000","message":"Thanks","commit_id":"346d31b1b43739623ab1ce34c526405c9d71d6c7"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"a2e4122402ac230112cca970cf758a024d8fe73e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"143837e7_7b4729bb","updated":"2022-03-18 10:57:57.000000000","message":"Pierre thanks)\n","commit_id":"1de4f2a4a3f6ef16399d812a544c6da622609e24"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"f71be64e6d60f2fb1c973dd6473a384b77c67d87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2e8c4504_b1aad96b","updated":"2022-03-18 11:25:00.000000000","message":"Thanks a lot for changing the approach. I just made some small rewording / reformatting changes.","commit_id":"1de4f2a4a3f6ef16399d812a544c6da622609e24"}],"ansible/ip-allocation.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8ef3fd34e33e5e2ad5e9404a350751e3412641fb","unresolved":true,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8b181812_61490eb7","line":29,"updated":"2022-03-02 17:20:37.000000000","message":"My proposal was a bit different. We would have a no_ip attribute for the network, which could be added as a host or group var.\n\nThen here, we could have:\n\n  - not item | net_no_ip | bool\n\nNo changes required for the ip-allocation role.","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"a8c1492e5aad559cd64823261ef58c5c56cc828e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"86c4436f_9d0f30a9","line":29,"in_reply_to":"1b8764a5_d5287854","updated":"2022-03-11 10:50:09.000000000","message":"the Mark\u0027s proposal is the another place for configuration - inventory, instead of configuration file network-allocation.yml. the workflow is the same, each time a new host is added you still need to run ip-allocation.","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"6d8c5b56cbe9f2293830286f537d2c9fe2c05564","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"2d211332_879ef46f","line":29,"in_reply_to":"29b7fbc7_88a49c20","updated":"2022-03-03 09:44:28.000000000","message":"I don\u0027t think it\u0027s too complicated - it reuses existing patterns. Typically the necessary group_vars file would already exist.\n\nIt also means we can be explicit about which network we do not want to allocate an IP address on. Conversely, in your approach, by setting the flag we are putting the host in a mode that skips validation of IPs for all networks.","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"9780ffddae70471216ae9798f0360795dfefc5b8","unresolved":true,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1b8764a5_d5287854","line":29,"in_reply_to":"2d211332_879ef46f","updated":"2022-03-04 09:56:59.000000000","message":"If I understand correctly your patch, each time a new host is added, you would need to run ip-allocation, then replace any auto-generated IP by an invalid value.\n\nI agree with Mark: setting a global/group/host variable for each network is much cleaner and would allow to run the IP allocation as usual. You would normally use the same IP allocation pattern for all hosts in a group, wouldn\u0027t you? (e.g. all compute hosts having no IP on bridge brfoo)","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"23fdc6e8df6f445166ad75098fa0f2d5eb253b5b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1f0288e6_15b3a4ce","line":29,"in_reply_to":"86c4436f_9d0f30a9","updated":"2022-03-16 11:59:33.000000000","message":"Mark, I completely rewrite all the code to realise Your proposal.","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"3ece6c985b47d8b3ff7f5e46cbdd92d503063c20","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      with_items: \"{{ network_interfaces }}\""},{"line_number":27,"context_line":"      when:"},{"line_number":28,"context_line":"        - item | net_cidr !\u003d None"},{"line_number":29,"context_line":"        - item | net_bootproto !\u003d \u0027dhcp\u0027"},{"line_number":30,"context_line":"  roles:"},{"line_number":31,"context_line":"    - role: ip-allocation"},{"line_number":32,"context_line":"      ip_allocation_filename: \"{{ kayobe_env_config_path }}/network-allocation.yml\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"29b7fbc7_88a49c20","line":29,"in_reply_to":"8b181812_61490eb7","updated":"2022-03-02 17:55:56.000000000","message":"Very interesting proposal, but it is much more complicated for configuration and adds too many points of failure, the mistake can be in the inventory directory names, in the files inside them, also when there are many hosts it is hard to manage all this. This requires no changes for the ip-allocation role but requires a new Jinja filter for the Ansible.\n\nMy solution is simple, all in one, easily manageable, there is one configuration file for all hosts.","commit_id":"dd4ea874473664cbbde56bffbf976019c1ad8ad7"}],"playbooks/kayobe-overcloud-host-configure-base/overrides.yml.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"795e9c169e5afcb72e3f167340edde2cdf2beed3","unresolved":true,"context_lines":[{"line_number":76,"context_line":"# br1: Bridge interface without IP address."},{"line_number":77,"context_line":"test_net_bridge_noip_cidr: 192.168.40.0/24"},{"line_number":78,"context_line":"test_net_bridge_noip_interface: br1"},{"line_number":79,"context_line":"test_net_bridge_noip_bridge_ports: [dummy8]"},{"line_number":80,"context_line":"test_net_bridge_noip_no_ip: true"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# Define a software RAID device consisting of two loopback devices."}],"source_content_type":"text/x-jinja2","patch_set":8,"id":"375915f5_3e1990d7","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":42},"updated":"2022-03-17 09:46:46.000000000","message":"dummy7?","commit_id":"a46962b7977423abf43f474034e48da7897637bb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"95a88c819927833801c01ddcfa392d699ba83215","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# br1: Bridge interface without IP address."},{"line_number":77,"context_line":"test_net_bridge_noip_cidr: 192.168.40.0/24"},{"line_number":78,"context_line":"test_net_bridge_noip_interface: br1"},{"line_number":79,"context_line":"test_net_bridge_noip_bridge_ports: [dummy8]"},{"line_number":80,"context_line":"test_net_bridge_noip_no_ip: true"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# Define a software RAID device consisting of two loopback devices."}],"source_content_type":"text/x-jinja2","patch_set":8,"id":"58aaaee9_32400ca9","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":42},"in_reply_to":"375915f5_3e1990d7","updated":"2022-03-17 10:02:54.000000000","message":"Done","commit_id":"a46962b7977423abf43f474034e48da7897637bb"}],"playbooks/kayobe-overcloud-host-configure-base/pre.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"795e9c169e5afcb72e3f167340edde2cdf2beed3","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    - name: Ensure dummy network interfaces exist"},{"line_number":40,"context_line":"      command: ip link add dummy{{ item }} type dummy"},{"line_number":41,"context_line":"      become: true"},{"line_number":42,"context_line":"      loop: \"{{ range(2, 9) | list }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"d99278f1_c1261494","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":26},"updated":"2022-03-17 09:46:46.000000000","message":"8?","commit_id":"a46962b7977423abf43f474034e48da7897637bb"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"95a88c819927833801c01ddcfa392d699ba83215","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    - name: Ensure dummy network interfaces exist"},{"line_number":40,"context_line":"      command: ip link add dummy{{ item }} type dummy"},{"line_number":41,"context_line":"      become: true"},{"line_number":42,"context_line":"      loop: \"{{ range(2, 9) | list }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f96efaf9_8d807c56","line":42,"range":{"start_line":42,"start_character":25,"end_line":42,"end_character":26},"in_reply_to":"d99278f1_c1261494","updated":"2022-03-17 10:02:54.000000000","message":"Done","commit_id":"a46962b7977423abf43f474034e48da7897637bb"}]}
