mirror of
https://github.com/openshift/installer.git
synced 2026-02-05 06:46:36 +01:00
To generate only the the config ISO instead of the normal one. Removed also unused flags from the params file
75 lines
1.9 KiB
Go
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)
|
|
}
|