67 lines
2.6 KiB
Go
67 lines
2.6 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"undecided.project/monok8s/pkg/node"
|
|
)
|
|
|
|
type Registry struct {
|
|
steps map[string]node.Step
|
|
}
|
|
|
|
func NewRegistry(ctx *node.NodeContext) *Registry {
|
|
netCfg := node.NetworkConfig{
|
|
Hostname: ctx.Config.Spec.Network.Hostname,
|
|
MgmtIface: ctx.Config.Spec.Network.ManagementIface,
|
|
MgmtAddress: ctx.Config.Spec.Network.ManagementCIDR,
|
|
MgmtGateway: ctx.Config.Spec.Network.ManagementGW,
|
|
DNSNameservers: ctx.Config.Spec.Network.DNSNameservers,
|
|
DNSSearchDomains: ctx.Config.Spec.Network.DNSSearchDomains,
|
|
}
|
|
|
|
return &Registry{
|
|
steps: map[string]node.Step{
|
|
"AllowSingleNodeScheduling": node.AllowSingleNodeScheduling,
|
|
"ApplyLocalNodeMetadataIfPossible": node.ApplyLocalNodeMetadataIfPossible,
|
|
"CheckUpgradePrereqs": node.CheckUpgradePrereqs,
|
|
"ClassifyBootstrapAction": node.ClassifyBootstrapAction,
|
|
"ConfigureDNS": node.ConfigureDNS(netCfg),
|
|
"ConfigureDefaultCNI": node.ConfigureDefaultCNI,
|
|
"ConfigureHostname": node.ConfigureHostname(netCfg),
|
|
"ConfigureMgmtInterface": node.ConfigureMgmtInterface(netCfg),
|
|
"DetectLocalClusterState": node.DetectLocalClusterState,
|
|
"EnsureIPForward": node.EnsureIPForward,
|
|
"GenerateKubeadmConfig": node.GenerateKubeadmConfig,
|
|
"PrintSummary": node.PrintSummary,
|
|
"ReconcileControlPlane": node.ReconcileControlPlane,
|
|
"ReconcileNode": node.ReconcileNode,
|
|
"RunKubeadmInit": node.RunKubeadmInit,
|
|
"RunKubeadmJoin": node.RunKubeadmJoin,
|
|
"RunKubeadmUpgradeApply": node.RunKubeadmUpgradeApply,
|
|
"RunKubeadmUpgradeNode": node.RunKubeadmUpgradeNode,
|
|
"SetHostnameIfNeeded": node.SetHostnameIfNeeded,
|
|
"StartCRIO": node.StartCRIO,
|
|
"ValidateNodeIPAndAPIServerReachability": node.ValidateNodeIPAndAPIServerReachability,
|
|
"ValidateRequiredImagesPresent": node.ValidateRequiredImagesPresent,
|
|
"WaitForExistingClusterIfNeeded": node.WaitForExistingClusterIfNeeded,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (r *Registry) MustGet(name string) node.Step {
|
|
step, ok := r.steps[name]
|
|
if !ok {
|
|
panic(fmt.Sprintf("unknown step %q", name))
|
|
}
|
|
return step
|
|
}
|
|
|
|
func (r *Registry) Get(name string) (node.Step, error) {
|
|
step, ok := r.steps[name]
|
|
if !ok {
|
|
return nil, fmt.Errorf("unknown step %q", name)
|
|
}
|
|
return step, nil
|
|
}
|