@@ -67,10 +67,21 @@ func (i *InstallConfig) loadFromFile(f asset.FileFetcher) (found bool, err error
6767 return false , fmt .Errorf ("%s, err: %w" , asset .InstallConfigError , err )
6868 }
6969 err = fmt .Errorf ("failed to parse first occurrence of unknown field, err: %w" , err )
70- logrus .Warn (err .Error ())
71- logrus .Info ("Attempting to unmarshal while ignoring unknown keys because strict unmarshaling failed" )
72- if err = yaml .Unmarshal (file .Data , config ); err != nil {
73- err = fmt .Errorf ("failed to unmarshal %s, err: %w" , InstallConfigFilename , err )
70+
71+ // Check if invoked by automation tool (Hive, assisted-service, etc.)
72+ // These tools may generate install-config with fields from newer versions
73+ // that aren't recognized by older installer versions.
74+ invoker := os .Getenv ("OPENSHIFT_INSTALL_INVOKER" )
75+ if invoker != "" {
76+ // Legacy behavior for automation tools: warn and continue
77+ logrus .Warn (err .Error ())
78+ logrus .Info ("Attempting to unmarshal while ignoring unknown keys because strict unmarshaling failed" )
79+ if err = yaml .Unmarshal (file .Data , config ); err != nil {
80+ err = fmt .Errorf ("failed to unmarshal %s, err: %w" , InstallConfigFilename , err )
81+ return false , fmt .Errorf ("%s, err: %w" , asset .InstallConfigError , err )
82+ }
83+ } else {
84+ // Strict behavior for direct user invocations: fail on unknown fields
7485 return false , fmt .Errorf ("%s, err: %w" , asset .InstallConfigError , err )
7586 }
7687 }
0 commit comments