@@ -84,11 +84,30 @@ func (info *reconcileInfo) publishEvent(reason, message string) {
8484}
8585
8686// return the PreprovisioningExtraKernelParams from the reconciliation info.
87- func retrievePreprovisioningExtraKernelParamsSpec (info * reconcileInfo ) string {
87+ func ( r * BareMetalHostReconciler ) retrievePreprovisioningExtraKernelParamsSpec (info * reconcileInfo , prov provisioner. Provisioner ) string {
8888 if info == nil || info .host == nil {
8989 return ""
9090 }
91- return info .host .Spec .PreprovisioningExtraKernelParams
91+ kernelExtraPreprovParams := info .host .Spec .PreprovisioningExtraKernelParams
92+ preprovImgFormats , err := prov .PreprovisioningImageFormats ()
93+ if err != nil {
94+ return kernelExtraPreprovParams
95+ }
96+ preprovImg , err := r .getPreprovImage (info , preprovImgFormats )
97+ if err != nil {
98+ return kernelExtraPreprovParams
99+ }
100+ // Make sure kernel extra params coming from dynamically generater preprov
101+ // Image are also represented in every life cycle operation
102+ if preprovImg != nil {
103+ trimmedParams := strings .TrimSpace (kernelExtraPreprovParams )
104+ if trimmedParams == "" {
105+ kernelExtraPreprovParams = preprovImg .GeneratedImage .ExtraKernelParams
106+ } else {
107+ kernelExtraPreprovParams += " " + preprovImg .GeneratedImage .ExtraKernelParams
108+ }
109+ }
110+ return kernelExtraPreprovParams
92111}
93112
94113// +kubebuilder:rbac:groups=metal3.io,resources=baremetalhosts,verbs=get;list;watch;create;update;patch;delete
@@ -853,7 +872,7 @@ func (r *BareMetalHostReconciler) registerHost(prov provisioner.Provisioner, inf
853872 CurrentImage : getCurrentImage (info .host ),
854873 PreprovisioningImage : preprovImg ,
855874 PreprovisioningNetworkData : preprovisioningNetworkData ,
856- PreprovisioningExtraKernelParams : retrievePreprovisioningExtraKernelParamsSpec (info ),
875+ PreprovisioningExtraKernelParams : r . retrievePreprovisioningExtraKernelParamsSpec (info , prov ),
857876 HasCustomDeploy : hasCustomDeploy (info .host ),
858877 DisablePowerOff : info .host .Spec .DisablePowerOff ,
859878 CPUArchitecture : getHostArchitecture (info .host ),
@@ -997,7 +1016,7 @@ func (r *BareMetalHostReconciler) actionInspecting(prov provisioner.Provisioner,
9971016 provResult , started , details , err := prov .InspectHardware (
9981017 provisioner.InspectData {
9991018 BootMode : info .host .Status .Provisioning .BootMode ,
1000- PreprovisioningExtraKernelParams : retrievePreprovisioningExtraKernelParamsSpec (info ),
1019+ PreprovisioningExtraKernelParams : r . retrievePreprovisioningExtraKernelParamsSpec (info , prov ),
10011020 },
10021021 info .host .Status .ErrorType == metal3api .InspectionError ,
10031022 refresh ,
@@ -1171,7 +1190,7 @@ func (r *BareMetalHostReconciler) actionPreparing(prov provisioner.Provisioner,
11711190 ActualRAIDConfig : info .host .Status .Provisioning .RAID .DeepCopy (),
11721191 RootDeviceHints : newStatus .Provisioning .RootDeviceHints .DeepCopy (),
11731192 FirmwareConfig : newStatus .Provisioning .Firmware .DeepCopy (),
1174- PreprovisioningExtraKernelParams : retrievePreprovisioningExtraKernelParamsSpec (info ),
1193+ PreprovisioningExtraKernelParams : r . retrievePreprovisioningExtraKernelParamsSpec (info , prov ),
11751194 }
11761195 // When manual cleaning fails, we think that the existing RAID configuration
11771196 // is invalid and needs to be reconfigured.
@@ -1299,7 +1318,7 @@ func (r *BareMetalHostReconciler) actionProvisioning(prov provisioner.Provisione
12991318 BootMode : info .host .Status .Provisioning .BootMode ,
13001319 HardwareProfile : hwProf ,
13011320 RootDeviceHints : info .host .Status .Provisioning .RootDeviceHints .DeepCopy (),
1302- PreprovisioningExtraKernelParams : retrievePreprovisioningExtraKernelParamsSpec (info ),
1321+ PreprovisioningExtraKernelParams : r . retrievePreprovisioningExtraKernelParamsSpec (info , prov ),
13031322 }, forceReboot )
13041323 if err != nil {
13051324 return actionError {fmt .Errorf ("failed to provision: %w" , err )}
@@ -1415,7 +1434,7 @@ func (r *BareMetalHostReconciler) actionDeprovisioning(prov provisioner.Provisio
14151434
14161435func (r * BareMetalHostReconciler ) doServiceIfNeeded (prov provisioner.Provisioner , info * reconcileInfo , hup * metal3api.HostUpdatePolicy ) (result actionResult ) {
14171436 servicingData := provisioner.ServicingData {}
1418- servicingData .PreprovisioningExtraKernelParams = retrievePreprovisioningExtraKernelParamsSpec (info )
1437+ servicingData .PreprovisioningExtraKernelParams = r . retrievePreprovisioningExtraKernelParamsSpec (info , prov )
14191438
14201439 // (NOTE)janders: since Servicing is an opt-in feature that requires HostUpdatePolicy to be created and set to onReboot
14211440 // set below booleans to false by default and change to true based on policy settings
0 commit comments