)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":22,"context_line":"to unmount any configuration drive folders, mount the most likely"},{"line_number":23,"context_line":"candidate based upon device type, partition, and overall state of"},{"line_number":24,"context_line":"the machine, and then utilize that configuration, if present,"},{"line_number":25,"context_line":"to re-configure and reload networking."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Thus allowing dhcp-less re-deployments to be fixed without"},{"line_number":28,"context_line":"forcing any breaking changes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5c7ff13c_54992fc6","line":25,"updated":"2023-11-30 10:22:26.000000000","message":"Are you sure it will remove the stuff added by cloud-init? Because I don\u0027t think the Glean developers have ever targeted this competition case.\n\nIn the end, I think this may be the wrong direction to take. A rogue configdrive partition won\u0027t just mess with networking: if cloud-init is used on IPA, it may insert arbitrary code. I think the best course of action is to randomize the partition label, and teach Glean to deal with that (e.g. from the kernel parameters). Or replace simple-init with our own element that handles that (and can handle tinycore as a bonus).","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6b811922d206f7c9f3daf1b848bd7438ae1afe6","unresolved":true,"context_lines":[{"line_number":22,"context_line":"to unmount any configuration drive folders, mount the most likely"},{"line_number":23,"context_line":"candidate based upon device type, partition, and overall state of"},{"line_number":24,"context_line":"the machine, and then utilize that configuration, if present,"},{"line_number":25,"context_line":"to re-configure and reload networking."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Thus allowing dhcp-less re-deployments to be fixed without"},{"line_number":28,"context_line":"forcing any breaking changes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"6cb91ab0_1a40eb1d","line":25,"in_reply_to":"37ff6ae5_2c634fa1","updated":"2023-11-30 15:19:31.000000000","message":"It\u0027s less about removing cloud-init and more about any traces of any network configurations that may happen before IPA runs.\n\nOn this note: there may be custom services that run before IPA and require networking (think, CERN\u0027s tarball download). This approach is a no-go for them.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":22,"context_line":"to unmount any configuration drive folders, mount the most likely"},{"line_number":23,"context_line":"candidate based upon device type, partition, and overall state of"},{"line_number":24,"context_line":"the machine, and then utilize that configuration, if present,"},{"line_number":25,"context_line":"to re-configure and reload networking."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Thus allowing dhcp-less re-deployments to be fixed without"},{"line_number":28,"context_line":"forcing any breaking changes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"37ff6ae5_2c634fa1","line":25,"in_reply_to":"5c7ff13c_54992fc6","updated":"2023-11-30 15:16:03.000000000","message":"absolutely sure, and they were surprised by how horrific the interaction could end up being. Which is why I\u0027ve patched simple-init in dib to rip out cloud-init if it is present for that very reason.\n\n\n\nTruthfully, I really just wanted to remove simple-init entirely and just directly read the addressing and assert it, but you guys didn\u0027t want that either even though it really wasn\u0027t that much code or logic.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"05dac11b_9c73d63e","updated":"2023-11-30 10:22:26.000000000","message":"I\u0027m afraid this will need to be reverted.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"11ca5f8dd07b0d0dc3a69fec44060d0ddeb63e31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7616ce29_edd5d65f","updated":"2023-11-15 21:30:36.000000000","message":"recheck tinycore build issues","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"}],"ironic_python_agent/cmd/agent.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00f46654e1c232554e391dc49a27933f78544264","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    # /etc/ironic-python-agent.d won\u0027t be loaded"},{"line_number":33,"context_line":"    vmedia_configuration \u003d utils.copy_config_from_vmedia()"},{"line_number":34,"context_line":"    if vmedia_configuration:"},{"line_number":35,"context_line":"        utils.trigger_glean_network_refresh()"},{"line_number":36,"context_line":"    log.register_options(CONF)"},{"line_number":37,"context_line":"    CONF(args\u003dsys.argv[1:])"},{"line_number":38,"context_line":"    # Debug option comes from oslo.log, allow overriding it via kernel cmdline"}],"source_content_type":"text/x-python","patch_set":6,"id":"99a0a73f_bc49af90","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":45},"updated":"2023-11-02 18:19:30.000000000","message":"maybe \"trigger_network_refresh\" ?","commit_id":"154745d7209a7fa037254ec41201f7b128e86468"}],"ironic_python_agent/utils.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d0c4133c5aedc1344039e34f998248a06c09acf3","unresolved":true,"context_lines":[{"line_number":354,"context_line":"    # Two uniform actions, run glean, then restart all networking."},{"line_number":355,"context_line":"    if not networkd:"},{"line_number":356,"context_line":"        # network manager present"},{"line_number":357,"context_line":"        utils.execute(\u0027python-glean\u0027, \u0027--use-nm\u0027, run_as_root\u003dTrue)"},{"line_number":358,"context_line":"        try:"},{"line_number":359,"context_line":"            utils.execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":360,"context_line":"                          run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7106c348_368e080b","line":357,"range":{"start_line":357,"start_character":23,"end_line":357,"end_character":35},"updated":"2023-10-13 18:48:23.000000000","message":"glean, python-glean is an alias when installed via glean-install.","commit_id":"dd99bccda3c74f0deb29efc0476cc23204639d04"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d0c4133c5aedc1344039e34f998248a06c09acf3","unresolved":true,"context_lines":[{"line_number":355,"context_line":"    if not networkd:"},{"line_number":356,"context_line":"        # network manager present"},{"line_number":357,"context_line":"        utils.execute(\u0027python-glean\u0027, \u0027--use-nm\u0027, run_as_root\u003dTrue)"},{"line_number":358,"context_line":"        try:"},{"line_number":359,"context_line":"            utils.execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":360,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":361,"context_line":"        except Exception:"},{"line_number":362,"context_line":"            utils.execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager.service\u0027,"},{"line_number":363,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":364,"context_line":"    else:"},{"line_number":365,"context_line":"        utils.execute(\u0027python-glean\u0027, \u0027--distro\u0027, \u0027networkd\u0027, run_as_root\u003dTrue)"},{"line_number":366,"context_line":"        utils.execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027systemd-networkd.service\u0027,"},{"line_number":367,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"def _get_cached_params():"}],"source_content_type":"text/x-python","patch_set":1,"id":"b5640388_1c4edeb8","line":367,"range":{"start_line":358,"start_character":5,"end_line":367,"end_character":39},"updated":"2023-10-13 18:48:23.000000000","message":"So maybe this is over thinking it\n\nMaybe we just need to teach glean a --oneshot-assert-state sort of mode where it applies the config into the running state. We don\u0027t need this to be persistent. I reality, we likely just don\u0027t want to do that.","commit_id":"dd99bccda3c74f0deb29efc0476cc23204639d04"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00f46654e1c232554e391dc49a27933f78544264","unresolved":true,"context_lines":[{"line_number":212,"context_line":"            msg \u003d (\"Unable to copy vmedia configuration %s to %s: %s\""},{"line_number":213,"context_line":"                   % (src, dest, exc))"},{"line_number":214,"context_line":"            raise errors.VirtualMediaBootError(msg)"},{"line_number":215,"context_line":"    network_data_path \u003d os.path.join("},{"line_number":216,"context_line":"        path, \u0027openstack/latest/network_data.json\u0027)"},{"line_number":217,"context_line":"    if os.path.isfile(network_data_path):"},{"line_number":218,"context_line":"        dest_path \u003d \u0027/mnt/config/openstack/latest\u0027"},{"line_number":219,"context_line":"        os.makedirs(dest_path, exist_ok\u003dTrue)"},{"line_number":220,"context_line":"        shutil.copy(network_data_path, os.path.join(dest_path,"},{"line_number":221,"context_line":"                                                    \u0027network_data.json\u0027))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"def _find_mount_point(device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a8de4eb_5e84cf39","line":221,"range":{"start_line":215,"start_character":0,"end_line":221,"end_character":73},"updated":"2023-11-02 18:19:30.000000000","message":"This doesn\u0027t make sense, it is just copying over the existing file :\\\n\nAnd in the current code path, we discard the mount point which glean already mounted in this case for us. Thanks glean!","commit_id":"10eba8aa49302d5a33b370b2865668aa03aab4f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00f46654e1c232554e391dc49a27933f78544264","unresolved":true,"context_lines":[{"line_number":333,"context_line":"        _early_log(\u0027Cannot use configuration from virtual media as the \u0027"},{"line_number":334,"context_line":"                   \u0027agent was not booted from virtual media.\u0027)"},{"line_number":335,"context_line":"        return"},{"line_number":336,"context_line":"    # Determine the device"},{"line_number":337,"context_line":"    mounted \u003d _find_mount_point(vmedia_device_file)"},{"line_number":338,"context_line":"    if mounted:"},{"line_number":339,"context_line":"        # Unmount if already mounted by something like glean/cloud init."}],"source_content_type":"text/x-python","patch_set":6,"id":"b56f7d72_b7d6a993","line":336,"updated":"2023-11-02 18:19:30.000000000","message":"We can safely log this point that we believe we have the correct device.","commit_id":"154745d7209a7fa037254ec41201f7b128e86468"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00f46654e1c232554e391dc49a27933f78544264","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        # Unmount if already mounted by something like glean/cloud init."},{"line_number":340,"context_line":"        execute(\"umount\", mounted, run_as_root\u003dTrue)"},{"line_number":341,"context_line":"    with ironic_utils.mounted(vmedia_device_file) as vmedia_mount_point:"},{"line_number":342,"context_line":"        _copy_config_from(vmedia_mount_point)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    # Finally, check mount and ensure unmounted before proceeding."},{"line_number":345,"context_line":"    # NOTE(TheJulia): This is a reserved path by convention for configuration"}],"source_content_type":"text/x-python","patch_set":6,"id":"e3c40201_fd84cbaa","line":342,"updated":"2023-11-02 18:19:30.000000000","message":"A note to add here, this is a dynamic folder.","commit_id":"154745d7209a7fa037254ec41201f7b128e86468"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00f46654e1c232554e391dc49a27933f78544264","unresolved":true,"context_lines":[{"line_number":345,"context_line":"    # NOTE(TheJulia): This is a reserved path by convention for configuration"},{"line_number":346,"context_line":"    # drive handling. Since you *can* stack multiple devices, we need to make"},{"line_number":347,"context_line":"    # sure no other tooling left anything in an unclean state."},{"line_number":348,"context_line":"    while os.path.ismount(\"/mnt/config\"):"},{"line_number":349,"context_line":"        try:"},{"line_number":350,"context_line":"            execute(\"umount\", \"/mnt/config\", run_as_root\u003dTrue)"},{"line_number":351,"context_line":"            _early_log(\"Sucessfully unmounted /mnt/config as an orphaned \""},{"line_number":352,"context_line":"                       \"source of configuration.\")"},{"line_number":353,"context_line":"        except OSError:"},{"line_number":354,"context_line":"            _early_log(\"We failed to umount /mnt/config. This may be fatal \""},{"line_number":355,"context_line":"                       \"if virtual media is in use for configuration.\")"},{"line_number":356,"context_line":"            return False"},{"line_number":357,"context_line":"    return True"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"def _determine_networking_path():"}],"source_content_type":"text/x-python","patch_set":6,"id":"cf88524a_1a66b6cc","line":357,"range":{"start_line":348,"start_character":0,"end_line":357,"end_character":15},"updated":"2023-11-02 18:19:30.000000000","message":"needs some unit tests","commit_id":"154745d7209a7fa037254ec41201f7b128e86468"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cfc6687bc328299bbb1be1f60fe2cb1eca6f1936","unresolved":true,"context_lines":[{"line_number":403,"context_line":"            execute(\u0027glean\u0027, \u0027--distro\u0027, \u0027tinycore\u0027, run_as_root\u003dTrue)"},{"line_number":404,"context_line":"            # While a shell script, glean doesn\u0027t set this file to"},{"line_number":405,"context_line":"            # be executable once it writes it."},{"line_number":406,"context_line":"            execute(\u0027/bin/sh\u0027, \u0027/opt/network.sh\u0027, run_as_root\u003dTrue)"},{"line_number":407,"context_line":"    except Exception as e:"},{"line_number":408,"context_line":"        _early_log(\u0027Unable to execute configuration refresh for \u0027"},{"line_number":409,"context_line":"                   \u0027configuration drive data. Error: %s\u0027 % e)"}],"source_content_type":"text/x-python","patch_set":6,"id":"10fbb031_befb52ef","line":406,"updated":"2023-11-02 18:21:56.000000000","message":"We likely need to wrap the exec here in a try, just note this is getting added as a feature to glean which releases independently and is really for the CI integrated test case.","commit_id":"154745d7209a7fa037254ec41201f7b128e86468"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"a5caae43d780ffee3827fedb8f7d3c59f0f847ca","unresolved":true,"context_lines":[{"line_number":337,"context_line":"    mounted \u003d _find_mount_point(vmedia_device_file)"},{"line_number":338,"context_line":"    if mounted:"},{"line_number":339,"context_line":"        # Unmount if already mounted by something like glean/cloud init."},{"line_number":340,"context_line":"        execute(\"umount\", mounted, run_as_root\u003dTrue)"},{"line_number":341,"context_line":"    with ironic_utils.mounted(vmedia_device_file) as vmedia_mount_point:"},{"line_number":342,"context_line":"        _copy_config_from(vmedia_mount_point)"},{"line_number":343,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"38fbebff_50a03e35","line":340,"updated":"2023-11-22 02:06:52.000000000","message":"Should this be wrapped in a try, and any exception ignored?","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"68d8a536df71754797b455bb748f85685b0cd097","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    mounted \u003d _find_mount_point(vmedia_device_file)"},{"line_number":338,"context_line":"    if mounted:"},{"line_number":339,"context_line":"        # Unmount if already mounted by something like glean/cloud init."},{"line_number":340,"context_line":"        execute(\"umount\", mounted, run_as_root\u003dTrue)"},{"line_number":341,"context_line":"    with ironic_utils.mounted(vmedia_device_file) as vmedia_mount_point:"},{"line_number":342,"context_line":"        _copy_config_from(vmedia_mount_point)"},{"line_number":343,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ae147165_59a56e35","line":340,"in_reply_to":"1a6f24a9_fc79382d","updated":"2023-11-22 20:18:09.000000000","message":"Done","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"27acf7d1c3036f263a2d38e965aa7ed27c3b6337","unresolved":true,"context_lines":[{"line_number":337,"context_line":"    mounted \u003d _find_mount_point(vmedia_device_file)"},{"line_number":338,"context_line":"    if mounted:"},{"line_number":339,"context_line":"        # Unmount if already mounted by something like glean/cloud init."},{"line_number":340,"context_line":"        execute(\"umount\", mounted, run_as_root\u003dTrue)"},{"line_number":341,"context_line":"    with ironic_utils.mounted(vmedia_device_file) as vmedia_mount_point:"},{"line_number":342,"context_line":"        _copy_config_from(vmedia_mount_point)"},{"line_number":343,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6f24a9_fc79382d","line":340,"in_reply_to":"38fbebff_50a03e35","updated":"2023-11-22 20:07:25.000000000","message":"I don\u0027t think so, specifically because we check to see and only act upon it if it is mounted. If it fails, we should likely just fail. I think.\n\nMy thought is we shouldn\u0027t trust it if we have issues.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":354,"context_line":"            _early_log(\"We failed to umount /mnt/config. This may be fatal \""},{"line_number":355,"context_line":"                       \"if virtual media is in use for configuration.\")"},{"line_number":356,"context_line":"            return False"},{"line_number":357,"context_line":"    return True"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7655fc2d_27219ef2","line":356,"updated":"2023-11-30 10:22:26.000000000","message":"This is wrong, the configuration has been copied.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":354,"context_line":"            _early_log(\"We failed to umount /mnt/config. This may be fatal \""},{"line_number":355,"context_line":"                       \"if virtual media is in use for configuration.\")"},{"line_number":356,"context_line":"            return False"},{"line_number":357,"context_line":"    return True"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7bfa5bc4_b196e6a7","line":356,"in_reply_to":"7655fc2d_27219ef2","updated":"2023-11-30 15:16:03.000000000","message":"If the folder is still mounted, we can\u0027t put what we\u0027ve ensured is not the on-disk copy. In other words, copy in the other direction because glean reads from a static location.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":354,"context_line":"            _early_log(\"We failed to umount /mnt/config. This may be fatal \""},{"line_number":355,"context_line":"                       \"if virtual media is in use for configuration.\")"},{"line_number":356,"context_line":"            return False"},{"line_number":357,"context_line":"    return True"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"def _determine_networking_path():"}],"source_content_type":"text/x-python","patch_set":9,"id":"42d23c5c_bd671a51","line":357,"updated":"2023-11-30 10:22:26.000000000","message":"The True here does not indicate that any files have actually been copied, only that the device existed and could be mounted.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":375,"context_line":"    \"\"\"Trigger procesing and refresh of network configuration.\"\"\""},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    # NOTE(TheJulia): Ironic explicitly doesn\u0027t support cloud-init"},{"line_number":378,"context_line":"    # as the consumer of this information in ramdisks. This stance"},{"line_number":379,"context_line":"    # may change in the future, but as of the beginning of the"},{"line_number":380,"context_line":"    # Caracal development cycle, cloud-init is uninstalled"},{"line_number":381,"context_line":"    # by ironic-python-agent-builder."}],"source_content_type":"text/x-python","patch_set":9,"id":"3539a05b_4965716d","line":378,"updated":"2023-11-30 10:22:26.000000000","message":"This statement is false. While we do nothing to support that, there may be consumers doing that, and in fact I\u0027ve heard of such.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":375,"context_line":"    \"\"\"Trigger procesing and refresh of network configuration.\"\"\""},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    # NOTE(TheJulia): Ironic explicitly doesn\u0027t support cloud-init"},{"line_number":378,"context_line":"    # as the consumer of this information in ramdisks. This stance"},{"line_number":379,"context_line":"    # may change in the future, but as of the beginning of the"},{"line_number":380,"context_line":"    # Caracal development cycle, cloud-init is uninstalled"},{"line_number":381,"context_line":"    # by ironic-python-agent-builder."}],"source_content_type":"text/x-python","patch_set":9,"id":"5659cbf7_4a325daa","line":378,"in_reply_to":"3539a05b_4965716d","updated":"2023-11-30 15:16:03.000000000","message":"News to me, We can support it, but it means we\u0027re going to need to support two or three unique addressing flows. The cloud-init as primary path basically cannot be recovered from either without wiping out the internal instance-id record in /var/lib/cloud and re-running cloud init. Do-able, just not great.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6b811922d206f7c9f3daf1b848bd7438ae1afe6","unresolved":true,"context_lines":[{"line_number":375,"context_line":"    \"\"\"Trigger procesing and refresh of network configuration.\"\"\""},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    # NOTE(TheJulia): Ironic explicitly doesn\u0027t support cloud-init"},{"line_number":378,"context_line":"    # as the consumer of this information in ramdisks. This stance"},{"line_number":379,"context_line":"    # may change in the future, but as of the beginning of the"},{"line_number":380,"context_line":"    # Caracal development cycle, cloud-init is uninstalled"},{"line_number":381,"context_line":"    # by ironic-python-agent-builder."}],"source_content_type":"text/x-python","patch_set":9,"id":"8d8d8bef_e0f08b94","line":378,"in_reply_to":"5659cbf7_4a325daa","updated":"2023-11-30 15:19:31.000000000","message":"Support as in: people are welcome to do it. We won\u0027t help, but we probably shouldn\u0027t break them either.\n\nPeople may also end up with something that is like glean but not quite. I know that Ericsson has some pretty customized IPA image for Metal3.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":385,"context_line":"    os.makedirs(glean_read_path, exist_ok\u003dTrue)"},{"line_number":386,"context_line":"    backup_copy \u003d \u0027/etc/ironic-python-agent.d/network_data.json\u0027"},{"line_number":387,"context_line":"    network_data \u003d os.path.join(glean_read_path, \u0027network_data.json\u0027)"},{"line_number":388,"context_line":"    shutil.copy(backup_copy, network_data)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    _early_log(\u0027Working to apply network configuration refresh.\u0027)"},{"line_number":391,"context_line":"    network_type \u003d _determine_networking_path()"}],"source_content_type":"text/x-python","patch_set":9,"id":"e22743bf_acf806fa","line":388,"updated":"2023-11-30 10:22:26.000000000","message":"This fails with FileNotFound in the metal3 CI. This code path is reachable even if no files have been copied, it\u0027s enough that the vmedia device is present and labelled accordingly.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":385,"context_line":"    os.makedirs(glean_read_path, exist_ok\u003dTrue)"},{"line_number":386,"context_line":"    backup_copy \u003d \u0027/etc/ironic-python-agent.d/network_data.json\u0027"},{"line_number":387,"context_line":"    network_data \u003d os.path.join(glean_read_path, \u0027network_data.json\u0027)"},{"line_number":388,"context_line":"    shutil.copy(backup_copy, network_data)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    _early_log(\u0027Working to apply network configuration refresh.\u0027)"},{"line_number":391,"context_line":"    network_type \u003d _determine_networking_path()"}],"source_content_type":"text/x-python","patch_set":9,"id":"74dda8ea_eaf673ca","line":388,"in_reply_to":"e22743bf_acf806fa","updated":"2023-11-30 15:16:03.000000000","message":"Folder doesn\u0027t exist, looks like that was the bad assumption. Looks like we get it with the case we run in CI but not in their job. :\\","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":394,"context_line":"    try:"},{"line_number":395,"context_line":"        if network_type \u003d\u003d \u0027networkmanager\u0027:"},{"line_number":396,"context_line":"            # network manager present"},{"line_number":397,"context_line":"            execute(\u0027glean\u0027, \u0027--use-nm\u0027, run_as_root\u003dTrue)"},{"line_number":398,"context_line":"            try:"},{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"88ca4375_ee96e949","line":397,"updated":"2023-11-30 10:22:26.000000000","message":"At which point do you check for Glean\u0027s presence? It looks like your change will fail if the user is using something else (or the glean executable is not in the path, or ...)","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":394,"context_line":"    try:"},{"line_number":395,"context_line":"        if network_type \u003d\u003d \u0027networkmanager\u0027:"},{"line_number":396,"context_line":"            # network manager present"},{"line_number":397,"context_line":"            execute(\u0027glean\u0027, \u0027--use-nm\u0027, run_as_root\u003dTrue)"},{"line_number":398,"context_line":"            try:"},{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"4fe43dd5_0f129ca9","line":397,"in_reply_to":"88ca4375_ee96e949","updated":"2023-11-30 15:16:03.000000000","message":"Yeah, likely should have done that. I assumed it was safe given the understanding among multiple cores, including yourself when I tried discussing it, that we only really supported Glean. I guess that was in the context of OpenStack use. :\\","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf95334f4ccce2b35e0174a3a7861a096af95788","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":401,"context_line":"            except Exception:"},{"line_number":402,"context_line":"                # Inconsistent naming across distributions."},{"line_number":403,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager.service\u0027,"},{"line_number":404,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":405,"context_line":"        if network_type \u003d\u003d \u0027networkd\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"504d0d63_dc40bf90","line":402,"updated":"2023-11-30 10:22:26.000000000","message":"This cannot be the case... Which OS does not allow .service?","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f80add0fe8f4e2ff37ec552e9333d6d1f734538b","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":401,"context_line":"            except Exception:"},{"line_number":402,"context_line":"                # Inconsistent naming across distributions."},{"line_number":403,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager.service\u0027,"},{"line_number":404,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":405,"context_line":"        if network_type \u003d\u003d \u0027networkd\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"b70d6667_9d45e89a","line":402,"in_reply_to":"504d0d63_dc40bf90","updated":"2023-11-30 15:16:03.000000000","message":"I think this is for ubuntu/debian, and the addition of .service was for Centos.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8a6c48b2a144bf529fba2e7e30929eb45f1874bb","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":401,"context_line":"            except Exception:"},{"line_number":402,"context_line":"                # Inconsistent naming across distributions."},{"line_number":403,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager.service\u0027,"},{"line_number":404,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":405,"context_line":"        if network_type \u003d\u003d \u0027networkd\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"8aa05123_48ab6298","line":402,"in_reply_to":"89e2ac19_43f617a1","updated":"2023-11-30 15:23:32.000000000","message":"We should explicitly call .service or .$something on all OSes -- this could lead to inconsistent behavior (e.g. if someone has a NetworkManager.timer; this could restart that as well/instead).\n\nI expect this to work on ubuntu and have a box I can test it on if you need me to, just ask in IRC.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6b811922d206f7c9f3daf1b848bd7438ae1afe6","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager\u0027,"},{"line_number":400,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":401,"context_line":"            except Exception:"},{"line_number":402,"context_line":"                # Inconsistent naming across distributions."},{"line_number":403,"context_line":"                execute(\u0027systemctl\u0027, \u0027restart\u0027, \u0027NetworkManager.service\u0027,"},{"line_number":404,"context_line":"                        run_as_root\u003dTrue)"},{"line_number":405,"context_line":"        if network_type \u003d\u003d \u0027networkd\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"89e2ac19_43f617a1","line":402,"in_reply_to":"b70d6667_9d45e89a","updated":"2023-11-30 15:19:31.000000000","message":"I would love us to double-check that. I was under a very strong impression that .service is a generic systemd thing. I don\u0027t have an Ubuntu handy to verify that though.","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"}],"releasenotes/notes/reload-glean-config-if-other-devices-found-7e9ebb861ed30ad5.yaml":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0c5cfe5deb3abde21a3bc6d7f47b23ac0458b63e","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    in DHCP-less modes should a prior node\u0027s ``config drive`` be"},{"line_number":16,"context_line":"    discovered as readable. Normally this issue is not a security"},{"line_number":17,"context_line":"    issue as long as ``ironic-python-agent-builder`` is utilized."},{"line_number":18,"context_line":"    Ironic\u0027s agent automatically exlcudes possible configuration"},{"line_number":19,"context_line":"    drive copies from previously deployed baremetal nodes."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"64a7f4f3_86e07d61","line":18,"updated":"2023-11-28 23:01:03.000000000","message":"sp: excludes","commit_id":"33f01fa3c2f32f447ed36f00fea68321c3991c2e"}]}
