1
0
mirror of https://github.com/openshift/installer.git synced 2026-02-05 06:46:36 +01:00
Files
installer/pkg/nodejoiner/addnodes.go
Andrea Fasano e988175bf8 add node-joiner --config-iso flag
To generate only the the config ISO instead of the normal one. Removed also unused flags from the params file
2024-11-20 05:58:27 -05:00

75 lines
1.9 KiB
Go

package nodejoiner
import (
"fmt"
"os"
"path/filepath"
"github.com/openshift/installer/pkg/asset"
"github.com/openshift/installer/pkg/asset/agent/configimage"
"github.com/openshift/installer/pkg/asset/agent/image"
"github.com/openshift/installer/pkg/asset/agent/joiner"
"github.com/openshift/installer/pkg/asset/agent/workflow"
workflowreport "github.com/openshift/installer/pkg/asset/agent/workflow/report"
"github.com/openshift/installer/pkg/asset/store"
)
const (
addNodesResultFile = "exit_code"
)
// NewAddNodesCommand creates a new command for add nodes.
func NewAddNodesCommand(directory string, kubeConfig string, generatePXE bool, generateConfigISO bool) error {
if generatePXE && generateConfigISO {
return fmt.Errorf("invalid configuration found")
}
err := saveParams(directory, kubeConfig)
if err != nil {
return err
}
assets := []asset.WritableAsset{
&workflow.AgentWorkflowAddNodes{},
}
var targetAsset asset.WritableAsset
switch {
case generatePXE:
targetAsset = &image.AgentPXEFiles{}
case generateConfigISO:
targetAsset = &configimage.ConfigImage{}
default:
targetAsset = &image.AgentImage{}
}
assets = append(assets, targetAsset)
ctx := workflowreport.Context(string(workflow.AgentWorkflowTypeAddNodes), directory)
fetcher := store.NewAssetsFetcher(directory)
err = fetcher.FetchAndPersist(ctx, assets)
if reportErr := workflowreport.GetReport(ctx).Complete(err); reportErr != nil {
return reportErr
}
// Save the exit code result
exitCode := "0"
if err != nil {
exitCode = "1"
}
if err2 := os.WriteFile(filepath.Join(directory, addNodesResultFile), []byte(exitCode), 0600); err2 != nil {
return err2
}
return err
}
func saveParams(directory, kubeConfig string) error {
// Store the current parameters into the assets folder, so
// that they could be retrieved later by the assets
params := joiner.Params{
Kubeconfig: kubeConfig,
}
return params.Save(directory)
}