Skip to content

Commit

Permalink
MGMT-16649: Use ignition info in request for ignition
Browse files Browse the repository at this point in the history
  • Loading branch information
CrystalChun committed Jan 30, 2024
1 parent 9226568 commit f0d28c5
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
10 changes: 5 additions & 5 deletions internal/bminventory/inventory.go
Original file line number Diff line number Diff line change
Expand Up @@ -974,7 +974,7 @@ func (b *bareMetalInventory) V2ImportClusterInternal(ctx context.Context, kubeKe
return &newCluster, nil
}

func (b *bareMetalInventory) createAndUploadDay2NodeIgnition(ctx context.Context, cluster *common.Cluster, host *models.Host, ignitionEndpointToken string) error {
func (b *bareMetalInventory) createAndUploadDay2NodeIgnition(ctx context.Context, cluster *common.Cluster, host *models.Host, ignitionInfo *common.IgnitionInfo, ignitionEndpointToken string) error {
log := logutil.FromContext(ctx, b.log)
log.Infof("Starting createAndUploadDay2NodeIgnition for cluster %s, host %s", cluster.ID, host.ID)

Expand All @@ -988,7 +988,7 @@ func (b *bareMetalInventory) createAndUploadDay2NodeIgnition(ctx context.Context
caCert = cluster.IgnitionEndpoint.CaCertificate
}

fullIgnition, err := b.IgnitionBuilder.FormatSecondDayWorkerIgnitionFile(ignitionEndpointUrl, caCert, ignitionEndpointToken, host)
fullIgnition, err := b.IgnitionBuilder.FormatSecondDayWorkerIgnitionFile(ignitionEndpointUrl, caCert, ignitionEndpointToken, ignitionInfo, host)
if err != nil {
return errors.Wrapf(err, "Failed to create ignition string for cluster %s, host %s", cluster.ID, host.ID)
}
Expand Down Expand Up @@ -1430,9 +1430,9 @@ func (b *bareMetalInventory) InstallSingleDay2HostInternal(ctx context.Context,
return err
}
// move host to installing
err = b.createAndUploadDay2NodeIgnition(ctx, cluster, &h.Host, h.IgnitionEndpointToken)
err = b.createAndUploadDay2NodeIgnition(ctx, cluster, &h.Host, &h.IgnitionInfo, h.IgnitionEndpointToken)
if err != nil {
log.Errorf("Failed to upload ignition for host %s", h.RequestedHostname)
log.WithError(err).Errorf("Failed to upload ignition for host %s", h.RequestedHostname)
return err
}
if installErr := b.hostApi.Install(ctx, &h.Host, tx); installErr != nil {
Expand Down Expand Up @@ -1501,7 +1501,7 @@ func (b *bareMetalInventory) V2InstallHost(ctx context.Context, params installer
if cluster, err = common.GetClusterFromDB(b.db, *h.ClusterID, common.SkipEagerLoading); err != nil {
return common.GenerateErrorResponder(err)
}
err = b.createAndUploadDay2NodeIgnition(ctx, cluster, h, host.IgnitionEndpointToken)
err = b.createAndUploadDay2NodeIgnition(ctx, cluster, h, &host.IgnitionInfo, host.IgnitionEndpointToken)
if err != nil {
log.Errorf("Failed to upload ignition for host %s", h.RequestedHostname)
return common.GenerateErrorResponder(err)
Expand Down
11 changes: 9 additions & 2 deletions internal/ignition/ignition.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ type Generator interface {
//go:generate mockgen -source=ignition.go -package=ignition -destination=mock_ignition.go
type IgnitionBuilder interface {
FormatDiscoveryIgnitionFile(ctx context.Context, infraEnv *common.InfraEnv, cfg IgnitionConfig, safeForLogs bool, authType auth.AuthType, overrideDiscoveryISOType string) (string, error)
FormatSecondDayWorkerIgnitionFile(url string, caCert *string, bearerToken string, host *models.Host) ([]byte, error)
FormatSecondDayWorkerIgnitionFile(url string, caCert *string, bearerToken string, ignitionInfo *common.IgnitionInfo, host *models.Host) ([]byte, error)
}

type installerGenerator struct {
Expand Down Expand Up @@ -1906,7 +1906,7 @@ func (ib *ignitionBuilder) prepareStaticNetworkConfigForIgnition(ctx context.Con
return filesList, nil
}

func (ib *ignitionBuilder) FormatSecondDayWorkerIgnitionFile(url string, caCert *string, bearerToken string, host *models.Host) ([]byte, error) {
func (ib *ignitionBuilder) FormatSecondDayWorkerIgnitionFile(url string, caCert *string, bearerToken string, ignitionInfo *common.IgnitionInfo, host *models.Host) ([]byte, error) {
var ignitionParams = map[string]interface{}{
// https://github.com/openshift/machine-config-operator/blob/master/docs/MachineConfigServer.md#endpoint
"SOURCE": url,
Expand All @@ -1917,6 +1917,13 @@ func (ib *ignitionBuilder) FormatSecondDayWorkerIgnitionFile(url string, caCert
ignitionParams["HEADERS"].(map[string]string)["Authorization"] = fmt.Sprintf("Bearer %s", bearerToken)
}

if ignitionInfo.TargetConfigVersionHash != "" {
ignitionParams["HEADERS"].(map[string]string)["TargetConfigVersionHash"] = ignitionInfo.TargetConfigVersionHash
}
if ignitionInfo.NodePoolName != "" {
ignitionParams["HEADERS"].(map[string]string)["NodePool"] = ignitionInfo.NodePoolName
}

if caCert != nil {
ignitionParams["CACERT"] = fmt.Sprintf("data:text/plain;base64,%s", *caCert)
}
Expand Down
8 changes: 4 additions & 4 deletions internal/ignition/mock_ignition.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f0d28c5

Please sign in to comment.