Skip to content

isoInstaller: fix interactive (no-kickstart) ISO install - #45

Merged
oliverkurth merged 1 commit into
vmware:masterfrom
dcasota:upstream/isoinstaller-interactive-fix
Jun 5, 2026
Merged

isoInstaller: fix interactive (no-kickstart) ISO install#45
oliverkurth merged 1 commit into
vmware:masterfrom
dcasota:upstream/isoinstaller-interactive-fix

Conversation

@dcasota

@dcasota dcasota commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Booting a Photon ISO interactively (no ks= boot parameter, no -c config, and no VMware guestinfo.kickstart.*) is broken by two coupled regressions:

  1. _load_ks_config_platform() / _load_ks_config_vmware() return None when no platform-provided kickstart exists. IsoInstaller.__init__ then dereferences it at if 'live' not in install_config, raising:
    TypeError: argument of type 'NoneType' is not a container or iterable.
  2. The 'live' block unconditionally sets install_config['live'] = True, making the otherwise-empty interactive config truthy. installer.configure() runs the curses UI configurator only when not install_config, so the UI is skipped and _check_install_config() fails with No disk configured.

Fix

  • Platform loaders return an empty {} config instead of None.
  • The 'live' flag is stamped only on a non-empty (kickstart) config, so the interactive config stays falsy and the UI configurator runs ('live' then defaults via _add_defaults()).

Regression introduced by 9fc8733 on top of 0a72c3a. Verified end-to-end with an interactive install on a VMware VM.

🤖 Generated with Claude Code

Booting the ISO interactively (no ks= boot param, no -c config, no VMware
guestinfo.kickstart.*) was broken by two coupled regressions:

1) _load_ks_config_platform()/_load_ks_config_vmware() returned None when
   no platform kickstart exists; __init__ then crashed at
   'if "live" not in install_config' with:
       TypeError: argument of type 'NoneType' is not a container or iterable
   Fix: return an empty {} config instead of None.

2) The 'live' block unconditionally stamped install_config['live']=True,
   making the empty interactive config truthy. installer.configure() only
   runs the UI configurator when 'not install_config', so the UI was
   skipped and _check_install_config() raised 'No disk configured'.
   Fix: only stamp 'live' on a non-empty (kickstart) config; leave the
   interactive config empty so the UI runs (live then defaults via
   _add_defaults()).

Regression introduced by 9fc8733 on top of 0a72c3a.

Co-Authored-By: Daniel Casota <dcasota@gmail.com>
@dcasota

dcasota commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

Part of a coordinated Photon 5.0 installer fix set:

@oliverkurth
oliverkurth merged commit 2633475 into vmware:master Jun 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants