)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"04a62e3f7a1256db89fd51d5475eb530d9d7cace","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2ac3e02c_ec184b03","updated":"2025-06-30 17:49:41.000000000","message":"Using some slightly different filters can make this simpler I think.\n\nIt would also be worth considering not having a global \u0027netmask\u0027 variable and instead configuring the network ranges directly as CIDR. This might be more expected for someone from network engineering background.","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"c69e92570b102c932eccb27329467b1a9cbbd491","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0b502e83_35e03658","updated":"2025-06-29 08:22:50.000000000","message":"recheck - fatal: unable to access \u0027https://opendev.org/opendev/dstat_graph/\u0027: Failed to connect to opendev.org port 443 after 109 ms","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6509a295ed79492510f3a6a6c98c265a16c113ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"77cc4fbb_6b95c60a","updated":"2025-07-02 04:20:51.000000000","message":"recheck qemu-block-extra : Depends: qemu-system-any (\u003d 1:8.2.2+ds-0ubuntu1.7) or\n                                     qemu-utils (\u003d 1:8.2.2+ds-0ubuntu1.7) but 1:8.2.2+ds-0ubuntu1.8 is to be installed","commit_id":"ad09e0d106f6173aaf300462b5d3171428342439"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ad94a999f688a2429ea0b9e8262801d065c08fc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e5851782_03af0e65","updated":"2025-07-02 17:16:21.000000000","message":"recheck timeouts","commit_id":"1a6d21621abae83f5b339106704781e046b93fcf"}],"etc/openstack_deploy/openstack_user_config.yml.aio.j2":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"04a62e3f7a1256db89fd51d5475eb530d9d7cace","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"used_ips:"},{"line_number":17,"context_line":"{% if \u0027ironic\u0027 in bootstrap_host_scenarios_expanded %}"},{"line_number":18,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u00271\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }},{{ _bmaas_network | ansible.utils.ipaddr(\u002710\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":19,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u0027110\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }},{{ _bmaas_network | ansible.utils.ipaddr(\u0027-10\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":20,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u0027100\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":21,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":7,"id":"818be6b7_c36ddfe1","line":18,"range":{"start_line":18,"start_character":25,"end_line":18,"end_character":84},"updated":"2025-06-30 17:49:41.000000000","message":"this (and all the others) can be simplified with ansible.utils.nthhost(N)","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"9f0925d377bc6d484bd2ef3d01be65285e9cb704","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"used_ips:"},{"line_number":17,"context_line":"{% if \u0027ironic\u0027 in bootstrap_host_scenarios_expanded %}"},{"line_number":18,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u00271\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }},{{ _bmaas_network | ansible.utils.ipaddr(\u002710\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":19,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u0027110\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }},{{ _bmaas_network | ansible.utils.ipaddr(\u0027-10\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":20,"context_line":"  - \"{{ _bmaas_network | ansible.utils.ipaddr(\u0027100\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":21,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":7,"id":"a327750c_7f629b79","line":18,"range":{"start_line":18,"start_character":25,"end_line":18,"end_character":84},"in_reply_to":"818be6b7_c36ddfe1","updated":"2025-07-01 19:05:07.000000000","message":"Done","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"}],"tests/roles/bootstrap-host/defaults/main.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"04a62e3f7a1256db89fd51d5475eb530d9d7cace","unresolved":true,"context_lines":[{"line_number":121,"context_line":"# By default the address will be set to the ipv4 address of the"},{"line_number":122,"context_line":"# host\u0027s network interface that has the default route on it."},{"line_number":123,"context_line":"bootstrap_host_public_address: \"{{ ansible_facts[bootstrap_host_public_interface | replace(\u0027-\u0027, \u0027_\u0027)][\u0027ipv4\u0027][\u0027address\u0027] }}\""},{"line_number":124,"context_line":"bootstrap_host_management_address: \"{{ _mgmt_network | ansible.utils.ipaddr(\u0027net\u0027) | ansible.utils.ipaddr(\u0027100\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":125,"context_line":"bootstrap_host_internal_address: \"{{ _mgmt_network | ansible.utils.ipaddr(\u0027net\u0027) | ansible.utils.ipaddr(\u0027101\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# Utility paths"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"aa1bc9cd_4734b325","line":124,"range":{"start_line":124,"start_character":55,"end_line":124,"end_character":82},"updated":"2025-06-30 17:49:41.000000000","message":"when is _mgmt_network not the network address?","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"9f0925d377bc6d484bd2ef3d01be65285e9cb704","unresolved":false,"context_lines":[{"line_number":121,"context_line":"# By default the address will be set to the ipv4 address of the"},{"line_number":122,"context_line":"# host\u0027s network interface that has the default route on it."},{"line_number":123,"context_line":"bootstrap_host_public_address: \"{{ ansible_facts[bootstrap_host_public_interface | replace(\u0027-\u0027, \u0027_\u0027)][\u0027ipv4\u0027][\u0027address\u0027] }}\""},{"line_number":124,"context_line":"bootstrap_host_management_address: \"{{ _mgmt_network | ansible.utils.ipaddr(\u0027net\u0027) | ansible.utils.ipaddr(\u0027100\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":125,"context_line":"bootstrap_host_internal_address: \"{{ _mgmt_network | ansible.utils.ipaddr(\u0027net\u0027) | ansible.utils.ipaddr(\u0027101\u0027) | ansible.utils.ipaddr(\u0027address\u0027) }}\""},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# Utility paths"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"2fe5b910_65d89805","line":124,"range":{"start_line":124,"start_character":55,"end_line":124,"end_character":82},"in_reply_to":"aa1bc9cd_4734b325","updated":"2025-07-01 19:05:07.000000000","message":"Done","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"}],"tests/roles/bootstrap-host/tasks/prepare_networking.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"7df5fcdd5babe237656587f2cea7a4fbdd0fcf54","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        mtu: 9000"},{"line_number":136,"context_line":"      - interface: \"br-storage\""},{"line_number":137,"context_line":"        address: \"{{ _storage_network | ansible.utils.nthhost(\u0027100\u0027) }}\""},{"line_number":138,"context_line":"        netmask: \"{{ netmask }}\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"      - interface: \"dummy-dbaas\""},{"line_number":141,"context_line":"        bridge: \"br-dbaas\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"bd15e0ac_9176c7b7","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":28},"updated":"2025-07-01 19:14:33.000000000","message":"do these need extracting from _storage_network etc....","commit_id":"a43b8ed8709885f9e93a30ee56ce8c13a092e5d4"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bfa4717f1e2a2f22337aa2eda254afe15aa511c3","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        mtu: 9000"},{"line_number":136,"context_line":"      - interface: \"br-storage\""},{"line_number":137,"context_line":"        address: \"{{ _storage_network | ansible.utils.nthhost(\u0027100\u0027) }}\""},{"line_number":138,"context_line":"        netmask: \"{{ netmask }}\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"      - interface: \"dummy-dbaas\""},{"line_number":141,"context_line":"        bridge: \"br-dbaas\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"73c8cbf6_27b761ef","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":28},"in_reply_to":"bd15e0ac_9176c7b7","updated":"2025-07-01 19:56:01.000000000","message":"Yeah, fixed in follow-up","commit_id":"a43b8ed8709885f9e93a30ee56ce8c13a092e5d4"}],"tests/roles/bootstrap-host/templates/user_variables.aio.yml.j2":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"44943047a1a2519e29fe48cd22e76f17dfdf5cad","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"## Tempest settings"},{"line_number":28,"context_line":"tempest_public_subnet_cidr: \"{{ vlan_network }}\""},{"line_number":29,"context_line":"tempest_public_subnet_allocation_pools: \"{{ vlan_network | ansible.utils.nthhost(\u002710\u0027) }}-{{ vlan_network | ansible.utils.nthhost(\u002750\u0027) }}\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"{% if _neutron_plugin_driver \u003d\u003d \u0027ml2.ovn\u0027 %}"},{"line_number":32,"context_line":"tempest_private_net_provider_type: geneve"}],"source_content_type":"text/x-jinja2","patch_set":9,"id":"09f45c61_cecb68a3","line":29,"range":{"start_line":29,"start_character":82,"end_line":29,"end_character":85},"updated":"2025-07-02 09:54:29.000000000","message":"typo of 110?","commit_id":"ad09e0d106f6173aaf300462b5d3171428342439"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6dfac8ff1396fd2f5e4adc9057f74740fe1575c5","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"## Tempest settings"},{"line_number":28,"context_line":"tempest_public_subnet_cidr: \"{{ vlan_network }}\""},{"line_number":29,"context_line":"tempest_public_subnet_allocation_pools: \"{{ vlan_network | ansible.utils.nthhost(\u002710\u0027) }}-{{ vlan_network | ansible.utils.nthhost(\u002750\u0027) }}\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"{% if _neutron_plugin_driver \u003d\u003d \u0027ml2.ovn\u0027 %}"},{"line_number":32,"context_line":"tempest_private_net_provider_type: geneve"}],"source_content_type":"text/x-jinja2","patch_set":9,"id":"7cfc9ec5_8262aa83","line":29,"range":{"start_line":29,"start_character":82,"end_line":29,"end_character":85},"in_reply_to":"09f45c61_cecb68a3","updated":"2025-07-02 13:31:27.000000000","message":"Done","commit_id":"ad09e0d106f6173aaf300462b5d3171428342439"}],"tests/roles/bootstrap-host/vars/main.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"06fe8a295de5bb10f5e72e0cc0c446a6f34a0bf1","unresolved":true,"context_lines":[{"line_number":76,"context_line":"  {% endif %}"},{"line_number":77,"context_line":"  {{ plugin }}"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"_mgmt_network: \"{{ [mgmt_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":80,"context_line":"_vxlan_network: \"{{ [vxlan_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":81,"context_line":"_storage_network: \"{{ [storage_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":82,"context_line":"_bmaas_network: \"{{ [bmaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":83,"context_line":"_dbaas_network: \"{{ [dbaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":84,"context_line":"_lbaas_network: \"{{ [lbaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":85,"context_line":"_vlan_network: \"{{ [vlan_range, netmask] | join(\u0027/\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"2d0c1594_0b5c86e4","line":85,"range":{"start_line":79,"start_character":0,"end_line":85,"end_character":56},"updated":"2025-07-01 15:50:55.000000000","message":"May be more obvious to just define these all directly as CIDR without this intermediate step.\n\nthe _range variables do not actually specify a range currently, just a starting address","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"9f0925d377bc6d484bd2ef3d01be65285e9cb704","unresolved":false,"context_lines":[{"line_number":76,"context_line":"  {% endif %}"},{"line_number":77,"context_line":"  {{ plugin }}"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"_mgmt_network: \"{{ [mgmt_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":80,"context_line":"_vxlan_network: \"{{ [vxlan_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":81,"context_line":"_storage_network: \"{{ [storage_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":82,"context_line":"_bmaas_network: \"{{ [bmaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":83,"context_line":"_dbaas_network: \"{{ [dbaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":84,"context_line":"_lbaas_network: \"{{ [lbaas_range, netmask] | join(\u0027/\u0027) }}\""},{"line_number":85,"context_line":"_vlan_network: \"{{ [vlan_range, netmask] | join(\u0027/\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"585938e8_c13a1f52","line":85,"range":{"start_line":79,"start_character":0,"end_line":85,"end_character":56},"in_reply_to":"2d0c1594_0b5c86e4","updated":"2025-07-01 19:05:07.000000000","message":"Done","commit_id":"a8c785a827d06fd09df411be9f2e85ced913969b"}]}
